Knockout映射不能处理对象数组。
这是我的小提琴 http://jsfiddle.net/varunfiddle/03rv2the/
基本上我试图将一组对象映射到一个可观察的数组中。
var ViewModel = function() {
var self = this;
var newData =
[{"PersonId":1,"Name":"LoginUser1","OriginalSource":null,"Remarks":null},
{"PersonId":2,"Name":"LoginUser1","OriginalSource":null,"Remarks":null}];
self.persons=ko.mapping.fromJS(newData, {}, self);
};
var myVM = new ViewModel();
ko.applyBindings(myVM);
然后将其绑定在html中
<table>
<tbody data-bind="foreach:persons">
<tr>
<td>
<label data-bind="text:Name"></label>
</td>
</tr>
</tbody>
</table>
我没有看到数据绑定发生在对象数组上。 有修复吗?感谢。
答案 0 :(得分:2)
删除调用ko.mapping.fromJS()
时的第三个参数(并删除第二个参数,现在不需要它)。第三个参数是要添加映射属性的现有对象。您不希望将该数组添加到视图模型中,您只是尝试使用映射属性创建新数组。
self.persons = ko.mapping.fromJS(newData);
如果要使用映射插件添加到视图模型,则需要创建一个与要创建的视图模型具有相同结构的对象,然后将其传递给函数(使用第三个参数)
var ViewModel = function() {
var self = this;
var model = {
persons: [
{"PersonId":1,"Name":"LoginUser1","OriginalSource":null,"Remarks":null},
{"PersonId":2,"Name":"LoginUser1","OriginalSource":null,"Remarks":null}
]
};
ko.mapping.fromJS(model, {}, self);
};