2013-05-10 163 views
1

如何防止选择改变事件触发的选择招标启动时?页面上的添加按钮将动态添加到DOM。当每个选择框添加到DOM中时,更改事件正在发射而不是从选择中选择项目?淘汰赛选择结合

+0

请提供小提琴重现了这个问题,我最后一次遇到这个问题,当我的选项是整数时,它与绑定字符串值有关。 – 2013-05-10 12:16:21

+0

@RicardoMedeirosPenna这thefiddle,HTTP://jsfiddle.net/aroor/DNsgF/我正在结合为字符串值。但在填充UI时仍然会触发更改事件。 – Aroor 2013-05-10 13:01:24

回答

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; 
}); 
+0

如果我不希望将selectedItem属性绑定在填充列表,有没有想要得到的列表加载到DOM后选定的时间? – Aroor 2013-05-10 15:02:20

+0

我不认为问题与列表正在加载的时刻有关。如果你有一个“选项”结合和“价值”结合,“价值”将不可避免,如果选择的项目没有在列表中找到......甚至动态结合正在加载的DOM后也不会改变问题而改变。 – Jalayn 2013-05-10 15:14:03