0

我正在尝试从使用 knockout.js 库在 MVC4 中编写的 JSON 响应中提取数据。我有这三个区域需要填充,其中第一个是多选框。我查看了在线示例以及参考资料,以及此处链接的提琴手,但无济于事。我遇到问题的领域是使用 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-ing 以查看返回的内容,并返回数组形式的值。但是,如果 arrayOne var 中有多个元素,则不会返回任何内容。

4

1 回答 1

1

在您的 ajax 调用中,您发送了错误的数据。如果要获取 observableArray 中的值,则必须这样:

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

检查这个例子

于 2012-08-25T00:54:21.650 回答