Init函数运行多次

时间:2015-12-29 13:41:45

标签: javascript

我的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时,控制台消息只写一次。这怎么可能?

1 个答案:

答案 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的原因。