Knockout没有映射数组中对象的属性

Ric*_*ury 7 knockout-mapping-plugin knockout.js

似乎敲除没有正确映射数组中对象的属性.

从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
Run Code Online (Sandbox Code Playgroud)

所以正在创建javascript对象,但是'name'属性没有被映射.

任何想法都非常欢迎!

Nik*_*iko 11

来自http://knockoutjs.com/documentation/plugins-mapping.html,关于toJS()功能:

这将创建一个未映射的对象,该对象仅包含作为原始JS对象一部分的映射对象的属性.

由于"名称"不是您映射的原始对象的一部分,因此它不会被取消映射.您需要告诉映射插件包含此特定属性:

var js = ko.mapping.toJS(viewmodel, { include: ['name'] });
Run Code Online (Sandbox Code Playgroud)

  • 我已经找到了ko.toJSON(viewModel),它似乎可以完成这项工作. (2认同)