Knockoutjs Mapping - 无法让它工作

时间:2012-08-29 04:29:13

标签: javascript knockout.js

我无法理解映射如何与knockoutjs一起使用。

由头:

我有一个返回JSON的API

我想将JSON映射到我视图中的列表

的javascript:

    var data = JSON.stringify([
        {
            "text": "this be some text"
        },
        {
            "text": "some more text here"
        }
    ]);

    var viewModel = ko.mapping.fromJSON(data);

    var updateData = function(){
        var newData = JSON.stringify([
            {
                "text": "this be some asdfasdfasdf"
            },
            {
                "text": "some more asdfasdfdfdf here"
            }
        ]);

        ko.mapping.fromJSON(newData, viewModel);
    }

    ko.applyBindings(viewModel);

data和newData的格式与我从API调用获取数据的格式相同。 (只是对象数组)

如何输出该数据?

<ul data-bind="foreach: whatgoeshere?">
    <li data-bind="text: text"></li>
</ul>

感谢您向我解释这个魔法是如何运作的;) 祝你有个美好的一天

1 个答案:

答案 0 :(得分:0)

首先你应该使用fromJS而不是fromJSON,因为最后一个需要一个包含json的字符串。

另一件事是你应该修改你的viewmodel:

{ arr: [ { name:'text' }, ... ] }

在你的foreach绑定中键入arr。

如果您不想修改模型,那么您可以将$ root传递给指向ko.applyBindings中使用的模型的foreach