Knockout ko.mappings.fromJS无法正常工作

Gh6*_*h61 2 javascript knockout-mapping-plugin knockout.js

我正在尝试使用淘汰映射,但它没有像我预期的那样工作.在这里,我创造了最简单的小提琴,但它不起作用.

我错过了什么吗?

https://jsfiddle.net/p48d11j5/1/

function Model(){
    var self = this;

    self.Id = ko.observable(0);
    self.Name = ko.observable("Default");
    self.Visible = ko.observable(false);
    self.Items = ko.observableArray([]);
}

function ModelItem(){
    var self = this;

    self.Id = ko.observable(0);
    self.Name = ko.observable("Default item name")
}

var m = new Model();

ko.mapping.fromJS({
    Id:1,
    Name: "Test",
    Visible: true,
    Items: [
    {
        Id:1,
        Name:"First"
    },
    {
        Id:2,
        Name:"Second"
    }
  ]
}, m);

ko.applyBindings(m);
Run Code Online (Sandbox Code Playgroud)

编辑:我正在使用嵌套数组,所以我添加了数组

edit2:我希望模型"键入"以使用它们的函数或ko.computed属性

Mat*_*adi 6

如果ko.mapping.fromJS使用两个参数调用:
ko.mapping.fromJS(data, mappedObject)第二个参数mappedObject是已经创建的参数.然后第二个参数将被视为viewModelnot options.

您所要做的就是:ko.mapping.fromJS(data,{},viewModel) - 这个将您的数据放在模型中

ko.mapping.fromJS({
    Id:1,
    Name: "Test",
    Visible: true,
    Items: [{Id: 1, Name: "First"}, {Id: 2, Name: "Second"}]
  }, {} ,m);  // pass the second argument as an empty object.
Run Code Online (Sandbox Code Playgroud)