我正在使用KnockoutJs 2.2。我有一個可以有零對多類別關聯的記錄。但是,我發現KnockoutJs實際上並沒有將該值綁定到記錄類別數組中的項目。使用KnockoutJs 2.2綁定到基於knockoutjs的整數中的選擇元素作爲編輯者
類別數組是{id,name}對象。這源於查找列表。
self.categories = ko.observableArray([{id:1,name:'Test1'},{id:2,name:'Test2'}]);
在我的視圖模型,我有一個記錄對象。此對象上的一個字段是類別(observableArray)。
categories: ko.observableArray([])
爲了簡化綁定,記錄對象在viewmodel上被稱爲「r」。
<div class="yui3-u-4-5">
<!-- ko foreach: r.categories-->
<select data-bind="options: $parent.categories, optionsCaption:'-',
optionsValue:'id', optionsText:'name', value:$data" />
<div class="del" data-bind="click: $parent.removeCat" />
<br />
<!-- /ko -->
<button data-bind="click: addCat">Add category</button>
</div>
當用戶添加或刪除一個類別,下面的代碼被稱爲:
self.removeCat = function (data) {
self.r.categories.remove(data);
};
self.addCat = function() {
self.r.categories.push(ko.observable(null));
}
基本上,會發生什麼情況是,當一個類被添加到self.r.categories陣列,並且那麼您從下拉菜單中選擇一個類別,所選項目的值不會綁定到數組中的可觀察元素($ data)。數組值保留爲空。
我已經重新創建這裏的問題:http://jsfiddle.net/fxXsq/
也許我應該做的這另一種方式?
感謝您的幫助 克里斯