如何使用 select 绑定敲除来制作选项 selected?

How to make option selected using select binding of knockout?

我想在 select 框中 select 默认选项。

我尝试了很多解决方案,但都没有成功。

  1. 我有很多选项,比方说 processChannels。
  2. 然后我通过将我的选项数组分配给 select 下拉列表来创建 select 选项。
  3. 现在我有一个值存储在一个变量 processTaskActor 中。

我想将 processTaskActor 值 select 编辑到 select 下拉列表。

下面是我的代码

<div>
        <select data-bind="options: processChannels,
            optionsText: 'propertyText',
            optionsValue: $data,
            value: processTaskActor,
            valueUpdate: 'input' ">
         </select>

         <div data-bind="with:processTaskActor">
            <div data-bind="text: propertyText">
         </div>

    </div>
    <script>
        var ViewModel = function(first, last) {

        self.processChannels = [
        {
          "propertyName": "Initiator",
          "propertyType": "User",
          "propertyValue": "",
          "propertyText": "Initiator"
        },
        {
          "propertyName": "Initiator",
          "propertyType": "User",
          "propertyValue": "",
          "propertyText": "Initiator Reject pruchase"
        },
        {
          "propertyName": "Initiator",
          "propertyType": "User",
          "propertyValue": "",
          "propertyText": "Initiator Purchase Approved"
        },
        {
          "propertyName": "Initiator",
          "propertyType": "User",
          "propertyValue": "",
          "propertyText": "Initiator Purchase approved high amount"
        },
        {
          "propertyName": "Manager",
          "propertyType": "User",
          "propertyValue": "",
          "propertyText": "Manager Approval"
        },
        {
          "propertyName": "Finance manager",
          "propertyType": "User",
          "propertyValue": "",
          "propertyText": "Finance manager Approve High amount"
        }
        ];

        self.processTaskActor = ko.observable({
          "propertyName": "Finance manager",
          "propertyType": "User",
          "propertyValue": "",
          "propertyText": "Finance manager Approve High amount"
        });
    };

    ko.applyBindings(new ViewModel());
    </script>

我没怎么用knockout

请帮我解决问题。

抱歉英语不好

试试这个:self.processTaskActor = ko.observable(self.processChannels[5]);

首先,您需要使您的 processTaskActor 成为一个可观察对象,并将 processChannels 成为一个可观察对象数组。

self.processTaskActor = ko.observable();
self.processChannels = ko.observableArray...

然后您可以在可观察数组中搜索您想要的确切对象。在您创建具有相同值的新对象之前。

var processTaskActor = ko.utils.arrayFirst(self.processChannels(), function (process) {
    return process.propertyName === "Finance manager" &&
           process.propertyText === "Finance manager Approve High amount";
});
self.processTaskActor(processTaskActor);

看到这个fiddle: