【问题标题】:Variables changing value automatically without any link in AngularJSAngularJS中没有任何链接的变量自动更改值
【发布时间】: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 会影响两者。
  • currentDatamasterCurrentData 指向同一个数组。

标签: javascript arrays angularjs object


【解决方案1】:

您将tmpDataSort 分配给_this.currentData_this.masterCurrentData,因此通过更改_this.currentData,您也可以更改tmpDataSort_this.masterCurrentData。您可以使用_this.currentData=angular.copy(tmpDataSort); 复制tmpDataSort

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2018-02-18
    • 2016-05-06
    • 1970-01-01
    相关资源
    最近更新 更多