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

最初はfromJSONではなくfromJSを使用する必要があります。これは、最後の1つがjsonを含む文字列を想定しているためです。

もう1つは、ビューモデルを次のように変更する必要があるということです。

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

そして、foreachバインディングにarrと入力します。

モデルを変更したくない場合は、ko.applyBindingsで使用されているモデルを指すforeachに$rootを渡すことができます。

于 2012-08-29T04:39:48.997 に答える