0

knockout.js ライブラリを使用して MVC4 で記述した JSON 応答からデータを取得しようとしています。これら 3 つの領域にデータを入力する必要があります。最初の領域は複数選択ボックスです。私はオンラインの例と参照、およびここにリンクされているフィドラーを見てきましたが、役に立ちませんでした。私が問題を抱えている領域は、arrayOne リストで選択された各項目について得られるすべてのデータを arrayTwo およびグリッド配列に取り込むことです。

function viewModel() {
    this.arrayOne = ko.observableArray();
    this.chosenarrayOne = ko.observableArray();
    this.arrayTwo = ko.observableArray();
    this.gridArray = ko.observableArray();
    this.chosenarrayTwo = ko.observableArray();
    this.chosenarrayOne.subscribe(function (nIds) {
        mvvm.arrayTwo(undefined);
        mvvm.gridArray(undefined);
        var nDx;
        if (nIds != null) {
            for (nDx = 0; nDx < nIds.length; nDx++) {
                $.ajax({
                    url: '{Working URL Omitted}',
                    data: { nValue: arrayOne[nDx] },
                    type: 'GET',
                    success: function (data) {
                        mvvm.arrayTwo(data);
                    },
                    error: function () {
                        alert('Array Two ajax error');
                    }
                });
                $.ajax({
                    url: '{Working URL Omitted}',
                    type: 'GET',
                    data: { nValue: nIds[nDx] },
                    success: function (data) {
// Example of what I would like to happen, however I get nothing back
                        mvvm.gridArray.arrayPushAll(data);

                        //mvvm.gridArray(data);
                    },
                    error: function () {
                        alert('Grid Array ajax error');
                    }
                });
            }
        }
    }, this);
}
var mvvm = new viewModel();
ko.applyBindings(mvvm);
$.ajax({
    url: '{Working URL Omitted}',
    type: 'GET',
    success: function (data) {
        mvvm.arrayOne(data);
    },
    error: function () {
        alert('Array One ajax call error');
    }
});

何が返ってくるかを確認するためにレスポンスをjsonしてみましたが、配列形式の値が返ってきました。ただし、arrayOne 変数に複数の要素がある場合、何も返されません。

4

1 に答える 1

1

ajax 呼び出しで、間違ったデータを送信しています。observableArray の値を取得したい場合は、次のように取得する必要があります。

arrayOne()[nDx] instead of arrayOne[nDx]

この例を確認してください

于 2012-08-25T00:54:21.650 に答える