我的javascript代码有问题。我有一个init函数调用函数getDevices()然后写一个控制台消息。 getDevices函数有一个4D数组,用作一个名为objectify的新函数的参数。该函数将创建4D阵列数据的对象。但我的问题是,当我推送到另一个存储新对象的数组时,init函数会再次运行。
vm = this;
vm.dataObj = [];
(function init(){
getData();
console.debug("im in init!");
})();
function getData(){
var data = [
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4]
];
objectify(data);
}
function objectify(dataArray){
vm.dataObj = [];
for(var i=0; i < dataArray.length; i++ ){
vm.dataObj .push({
nr1: dataArray[i][0],
nr2: dataArray[i][1],
nr3: dataArray[i][2],
nr4: dataArray[i][3]
});
}
}
从上面的代码中,控制台消息“im in init”运行5次,但是当我删除push时,控制台消息只写一次。这怎么可能?
答案 0 :(得分:1)
我发现是什么导致了我的问题。一些评论建议我在错误的地方搜索。发生错误是因为我在角网格中使用了ui-grid,在网格配置的一个columnDefs中我使用了一个cellTemplate。看起来像这样:
'<div class="ui-grid-cell-contents ngCellText" ng-controller="DevicesController as vm"><a ng-click="vm.goToDevice(row.entity)">{{COL_FIELD}}</a></div>',
含义ng-controller是多重init的原因。