方法多次激活

时间:2014-08-02 12:29:57

标签: javascript angularjs

我在我的控制器中调用一个方法,但是当我想记录object.name时它会激活2次。 当我想记录整个对象时,它会激活6次。你知道为什么吗?

(function(){

    var app = angular.module('portfolio', ['ngRoute' ]);

    app.controller('ReferenceController', function(){

        this.product = references;
        this.arrayLength = this.product.length;

        // @TODO
        this.getReferences = function(){ 

            for(var i = 0; i < this.arrayLength; i++){
                console.log(this.product[i].name);
            }

             return false;

        };

    });

    var references = [

        {
            name: "ThisIsName",
            imgUrl: "This Is Image URL",
            pageUrl: "This Is Page URL",
            tags: [
                {tag: "web"}
            ]
        }

    ];

})();

我称之为

<div ng-controller='ReferenceController as reference'>
      {{reference.getReferences()}}
</div>

2 个答案:

答案 0 :(得分:2)

这是由Angular的双向数据绑定引起的,它使用$digest循环,因为它被调用。 (将其视为允许Angular检查值是否已更新。) 如果您只想运行一次该功能,请在您的控制器内调用它。

你可以read more about the digest loop here

答案 1 :(得分:0)

不确定你具体要求但是

  for(var i = 0; i < this.arrayLength; i++){
                console.log(this.product[i].name);
            }

本质上意味着它将从头到尾遍历整个数组,并且对于每个值,它会一次打印到控制台。因此它会为数组中的多个值打印多次。