似乎 knockout 没有正确映射数组中对象的属性。
从 chrome 控制台查看此示例:
> var viewmodel = ko.mapping.fromJS({list:[]});
undefined
> viewmodel.list().unshift({ name : ko.observable("Foo") });
1
> viewmodel.list()[0].name();
"Foo"
> var js = ko.mapping.toJS(viewmodel);
undefined
> js.list[0].name;
undefined
因此正在创建 javascript 对象,但未映射 'name' 属性。
任何想法都非常受欢迎!
最佳答案
来自 http://knockoutjs.com/documentation/plugins-mapping.html ,关于toJS()
功能:
This will create an unmapped object containing only the properties of the mapped object that were part of your original JS object.
由于“名称”不是您映射的原始对象的一部分,因此它不会被取消映射。您需要告诉映射插件包含此特定属性:
var js = ko.mapping.toJS(viewmodel, { include: ['name'] });
关于knockout.js - Knockout 不映射数组中对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10175108/