【发布时间】:2012-12-07 01:59:01
【问题描述】:
我正在使用 KnockoutJs 2.2。我有一个可以有零对多类别关联的记录。但是,我发现 KnockoutJs 实际上并没有将值绑定到记录的类别数组中的项目。
类别数组是 {id, name} 对象。这是从查找列表派生的。
self.categories = ko.observableArray([{id:1,name:'Test1'},{id:2,name:'Test2'}]);
在我的视图模型上,我有一个记录对象。此对象上的字段之一是类别 (observableArray)。
categories: ko.observableArray([])
为在绑定中简洁起见,视图模型上的记录对象称为“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 数组中,然后你从下拉列表中选择一个类别时,所选项目的值不会绑定到数组内的 observable($data )。数组值保持为空。
我在这里重新创建了问题:http://jsfiddle.net/fxXsq/
也许我应该以另一种方式这样做?
感谢您的帮助 克里斯
【问题讨论】: