1

启动选择投标时如何防止选择更改事件触发?页面上的添加按钮,它将动态添加选择到 DOM。当每个选择框都添加到 DOM 时,会触发更改事件而不是我从选择中选择项目?

4

1 回答 1

1

问题是 KnockoutJS 试图找到列表框中的哪个元素与requiredItemobservable 匹配。一开始没有,这就是为什么它会尝试将其设置为列表框的“标题”。您没有提供一个,因此它设置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; 
});
于 2013-05-10T13:22:18.253 回答