2012-08-24 24 views
0

我試圖從JSON響應,我使用knockout.js庫在MVC4中寫入數據。我有三個需要填充的區域,第一個是多選框。我看過網上的例子以及參考資料,並在這裏鏈接小提琴,無濟於事。我遇到的問題是使用arrayOne列表中選中的每個項目的所有數據填充arrayTwo和grid數組。KO.utils.arrayPushAll添加新元素的選擇更改爲另一個選定的框和網格

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 var中有多個元素,則無法返回。

回答

1

在您的ajax調用中,您發送的是錯誤數據。如果你想在observableArray的價值,你必須得到這樣的:

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

入住這example

相關問題