0

我很难理解映射如何与 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>

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

4

1 回答 1

0

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

另一件事是你应该像这样修改你的视图模型:

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

并在你的 foreach 绑定中输入 arr。

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

于 2012-08-29T04:39:48.997 回答