2014-06-10 77 views
0

我有對象TransactionVModel.FiltersList[]的數組引用類型。
當我這個數組複製到另一個陣列fltrList[],如果我修改任何對象的數組fltrList將得到它在JQuery的陣列TransactionVModel.FiltersList反映?爲了更清晰起見,下面是我的例子。由於它是一個引用類型,因此它應該更新數組TransactionVModel.FiltersList,但在我的情況下它不會發生,我可以知道它爲什麼不會發生嗎?複製對象數組另一個陣列是它在JQuery中

TransactionVModel.FiltersList被聲明爲我的代碼ko.observableArray();

function UpdateSelectedFilters(data) { 
    var fltrList = []; 
    fltrList = TransactionVModel.FiltersList(); 
    for (var i = 0; i < data.length ; i++) { 
     var index = fltrList.indexOf(data[i]); 
     if (index != -1) { 
     var fltrObj = fltrList[index]; 
     var fltrValArr = []; 
     fltrValArr = data.valueItems; 
     for (var j = 0; j < fltrValArr.length; j++) { 
     if (fltrValArr[j].IsSelected == true) { 
     if (fltrObj.indexOf(fltrValArr[j]) != -1) { 
      var selectedVal = fltrObj[fltrObj.indexOf(fltrValArr[j])]; 
      selectedVal.IsSelected = true; 
       } 
      } 
     } 
    } 
} 

我的方案,我更新selectedVal.IsSelected屬性,但它並不反映observableArray TransactionVModel.FiltersList

+0

你確定代碼實際上是設置'selectedVal'?它有三個級別的條件代碼,所以只要確保:) –

回答

0

你需要告訴你的陣列具有帶valueHasMutated改變淘汰賽:

function UpdateSelectedFilters(data) { 
    var fltrList = []; 
    fltrList = TransactionVModel.FiltersList(); 
    //... 
    TransactionVModel.FiltersList.valueHasMutated(); 
} 
相關問題