【发布时间】:2016-01-05 08:59:35
【问题描述】:
我的 AngularJS 控制器中有两个变量,即
_this.currentData=new Array();
_this.masterCurrentData=new Array();
后来我创建了另一个临时对象数组并使用循环等单独填充。
var tmpDataSort=[{
"values":new Array(),
disabled: false,
"key":"Retail"
},{
"values":new Array(),
disabled: true,
"key":"Commercial"
},{
"values":new Array(),
disabled: true,
"key":"Industrial"
},{
"values":new Array(),
disabled: true,
"key":"Residential"
}]
_this.masterCurrentData=tmpDataSort;
_this.currentData=tmpDataSort;
tmpDataSort=null;
以后每当我自动对当前数据执行操作时,MasterCurrentData 的值都会发生变化,而我从未使用过 masterCurrent Data
_this.modifyCurrentBean = function(locName, selectFlag){
console.log(_this.masterCurrentData[0].values)
for(var i=0;i<_this.currentData.length;i++){
for(var j=0;j<_this.currentData[i].values.length;j++){
if(_this.currentData[i].values[j].x==locName){
_this.currentData[i].values.splice(j,1);
break;
}
}
}
console.log(_this.masterCurrentData[0].values)
}
第一个控制台显示 [object object] 第二个控制台只显示一个 [object]
【问题讨论】:
-
你能做一个演示,我们可以尝试帮助你。
-
好吧,因为 currentData 和 masterCurrentData 指的是同一个数组。在数组上调用 splice 会影响两者。
-
currentData和masterCurrentData指向同一个数组。
标签: javascript arrays angularjs object