3

Knockout で遊んでみましたが、監視可能な配列へのプッシュに問題があります。以下の私のコードは、ボタンのクリックでサーバーからいくつかの json データをフェッチし、オブジェクトの配列を返します。最初の console.log コンソールは問題なく出力されます。オブジェクトの配列は問題なくダンディです。

ただし、各オブジェクトを監視可能な配列にプッシュすることはできないようです。コンソールに空の配列が表示されます。いくつかのバリエーションを試してみましたが、単純なものが欠けているように感じますが、追跡するのに苦労しています.

私がやろうとしているのは、サーバーからいくつかのデータをロードし、それをテンプレートにバインドできる監視可能な配列に入れ、配列の内容を出力するために foreach のようなことを行うことです。

$(function() {
    $('#load').click(function() {
        $.getJSON('/PreferredDrugList/service/preferredDrugs/y', function(data) {
            $(data.preferredDrugs).each(function(index, obj) {
                console.log(obj);
                $('#result').append('<p>' + (++index) + ') ' + obj.drugName + ' : ' + obj.dosageFormDesc + '</p>');

                myViewModel.drugList.push(obj);
                console.log(myViewModel.drugList);
            });
        });//end getJSON
    });//end load

});//end ondomready

var myViewModel = {
    drugList: ko.observableArray()  //list of drug names
};

ko.applyBindings(myViewModel);
4

1 に答える 1

2

以下をご覧ください: http://jsfiddle.net/qszZD/

上記のコメントで、 foreach を機能させる必要があると述べました。うまくいけば、これはあなたにとって良いスタートです。私はあなたが世話をしたいかもしれないし、したくないかもしれないいくつかのものを使用しています:

ノックアウトJS.マッピング

オプションの mappingOptions を使用して、マッピング ライブラリから返されたデータに基づいて計算されたオブザーバブルを定義しています。KO マッピングを使用することで、要素を監視可能な配列に手動でプッシュする必要がなくなります。マッピング ライブラリはそれを自動的に処理し、マッピング オプションを提供して追加の計算フィールドを作成することで、モデルをさらに拡張することもできます。

ご不明な点がございましたら、お知らせください。

于 2012-08-28T21:21:18.443 に答える