敲除选择绑定

时间:2013-05-10 09:35:42

标签: select data-binding knockout.js knockout-2.0

如何在启动选择招标时阻止选择更改事件触发?页面上的添加按钮,将动态添加到DOM。当每个选择框添加到DOM时,更改事件是触发而不是从select?

中选择项目

1 个答案:

答案 0 :(得分:1)

问题是KnockoutJS试图找到列表框中的哪个元素与requiredItem可观察对象匹配。一开始没有,这就是为什么它会尝试将其设置为列表框的“标题”。您没有提供一个,因此它将requiredItem设置为列表框的第一个元素。

您可以做的是为数组添加标题项:

self.requireditems = ko.observableArray([
{ desc: "Select an option from the list...", key: 0, editable: false } // ... and then all other items]);

如果你真的不想更新requiredItem

self.selectedItem = ko.observable(self.requiredItems()[0]);

然后,如果您想知道是否从列表中选择了有效元素,您可以添加以下属性:

self.isValidSelectedItem = ko.computed(function() { 
     return self.selectedItem().id; 
});