我想使用插件来填充数据,但没有填充值。
简单的例子:
var data = {
Type: 1,
Id: "123-12321"
};
var RiskItemModel = function (item) {
var self = this;
self.Id = ko.observable("tes");
self.Type = ko.observable(); //enum int
if (item) {
// DATA SHOULD BE POPULATED HERE, but no effect
ko.mapping.fromJS(item, this);
};
};
var model = new RiskItemModel(data);
ko.applyBindings(model);
// I HAVE TRIED THIS ALSO, NO EFFECT
//ko.mapping.fromJS(data, model);
HTML:
<div>
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
</div>
JSFidde:http://jsfiddle.net/wLbV6/
最佳答案
您没有使用 ko.mapping.fromJS
函数的正确重载。
你需要写:
ko.mapping.fromJS(item, {} /* mapping options */, this);
演示 JSFiddle .
ko.mapping.fromJS
函数只支持两个参数,如果第二个参数是一个已经被插件映射的对象,所以它有 "__ko_mapping__"
属性(property)。
您可以在此处阅读有关不同重载的更多信息:Unable to parse bindings js error using ko.mapping.fromJSON with parse exist view model
关于knockout.js - 如何使用knockout mapping插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21016663/