2014-06-10 48 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(); 
} 
相关问题