如何使用淘汰映射插件?

ren*_*thy 2 knockout-mapping-plugin knockout.js

我想使用插件来填充数据,但不会填充值.

简单的例子:

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

HTML:

<div>
    <pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
</div>
Run Code Online (Sandbox Code Playgroud)

JSFidde:http://jsfiddle.net/wLbV6/

nem*_*esv 6

您没有使用该ko.mapping.fromJS功能的正确重载.

你需要写:

ko.mapping.fromJS(item, {} /* mapping options */, this);
Run Code Online (Sandbox Code Playgroud)

演示JSFiddle.

ko.mapping.fromJS如果第二个参数是一个已经由插件映射的对象,那么函数仅适用于仅提供两个参数,因此它具有该"__ko_mapping__"属性.

你可以在这里阅读更多关于不同重载的信息:无法解析绑定js错误使用ko.mapping.fromJSON与解析存在视图模型