为什么这个淘汰映射代码不起作用?

时间:2014-02-14 06:31:06

标签: javascript knockout.js

我有一个json对象列表,我想使用ko映射插件映射到knockout viewmodel列表。以下是我的代码(只是为了解释我的问题,不需要认真对待这段代码):

var itemsList = [
    { Id: 1, Name: 'A' },
    { Id: 2, Name: 'B' },
    { Id: 3, Name: 'C' }
];

var item = function(data) {
    ko.mapping.fromJS(data, {}, this);
}

var listOfItems = ko.observableArray();

var listOfItems = ko.mapping.fromJS(itemsList, {
    create: function(options) {
        return new item(options.data);
    }
});

现在我的listOfItems总是空的,为什么??

1 个答案:

答案 0 :(得分:0)

您可以真正简化此代码并使其运行良好。

var itemsList = [{ Id: 1, Name: 'A' }, { Id: 2, Name: 'B' }, { Id: 3, Name: 'C' }];
var viewModel = {
    listOfItems: ko.mapping.fromJS(itemsList)
}
ko.applyBindings(viewModel);

现在您拥有带有observableArray listOfItems的viewModel,此数组中的所有项目都包含IdName个属性。
您可以使用以下代码对其进行测试:

<ul data-bind="foreach: listOfItems">
    <li> 
        <span data-bind="text: Id"></span>
        <span data-bind="text: Name"></span>
    </li>
</ul>