2013-05-10 210 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