knockout.js - Knockout 不映射数组中对象的属性

标签 knockout.js knockout-mapping-plugin

似乎 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/

相关文章:

knockout.js - 当父对象设置为 null 时,Knockout 失去与内部可观察对象的绑定(bind)

c# - 是什么使Entity Framework/Upshot相信我的对象图“包含周期”?

knockout.js - knockout 映射似乎打破了下拉菜单的值绑定(bind)

knockout.js - KnockoutJS : ko. ToJSON(这个)不起作用?

javascript - 如何延迟绑定(bind) KnockoutJS observable

javascript - 使用 Knockoutjs 在客户端添加和删除项目

knockout.js - 如何绑定(bind)可编辑的 ko.observableArray 可观察字符串?

javascript - knockout 可观察数组中的错误值

javascript - 在 ko.applyBindings 中排除 html 元素