我有一组对象TransactionVModel.FiltersList[]
当我将此数组复制到另一个数组fltrList[]
并且如果我修改数组fltrList
中的任何对象时,它是否会反映在JQuery中的数组TransactionVModel.FiltersList
中?为了更清楚,下面是我的例子。按照我的说法,因为它是一个引用类型,它也应该更新数组TransactionVModel.FiltersList
,但在我的场景中它没有发生,我能知道它为什么没有发生吗?
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 :(得分:0)
你需要告诉你淘汰你的阵列已经改变了valueHasMutated
:
function UpdateSelectedFilters(data) {
var fltrList = [];
fltrList = TransactionVModel.FiltersList();
//...
TransactionVModel.FiltersList.valueHasMutated();
}