首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >angularjs ng-class方法被多次调用

angularjs ng-class方法被多次调用
EN

Stack Overflow用户
提问于 2013-04-11 22:51:34
回答 1查看 3.2K关注 0票数 8

在这个例子中,我得到了2 ng-class,每个都调用了不同的控制器方法,由于某种原因,每个方法被调用了3次,你知道吗?可能是bug?

代码语言:javascript
运行
复制
var navList = angular.module('navList', []);

navList.controller('navCtrl', ['$scope', '$location', function ($scope, $location) {
    $scope.firstClass = function () {
        console.log('firstClass');
        return 'label label-success' ;
    };     
    $scope.secondClass = function () {
        console.log('secondClass');
        return 'label' ;
    };     

}]);

http://jsfiddle.net/uDPHL/72/

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-11 23:25:29

这不是一个bug。当Angular编译像ng-class="firstClass()"这样的东西时,它会为它设置一个$watch。摘要循环可能会多次评估每个$watch:

Angular进入$digest循环。该循环由处理$evalAsync队列和$watch列表的两个较小的循环组成。$digest循环不断迭代,直到模型稳定下来,这意味着$evalAsync队列为空,并且$watch列表不会检测到任何更改。-- Overview doc

也是

在将监视器注册到作用域之后,将异步调用侦听器fn (通过$evalAsync)来初始化监视器。在极少数情况下,这是不可取的,因为侦听器是在watchExpression的结果没有改变时调用的。-- $watch docs

因此,预计至少会有两次。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15951984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档