Knockoutjs映射-很难让它工作

Knockoutjs Mapping - Trouble getting it to work

本文关键字:工作 很难 映射 Knockoutjs      更新时间:2023-09-26

我很难理解映射是如何使用knockoutjs的。

Pretext:

我有一个API,它返回JSON

我想将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>

感谢你向我解释这种魔法是如何运作的;)祝您愉快

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

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

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

在前臂绑定中键入arr。

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