Angularjs的ng-class方法被多次调用
angularjs ng-class method is getting invoked multiple times
在这个例子中,我有2个ng-class,每个调用不同的控制器方法,由于某种原因每个方法被调用3次,你知道吗?可能的错误?
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/谢谢
这不是一个bug。当Angular编译像ng-class="firstClass()"
这样的东西时,它会为它设置一个$watch。摘要循环可以对每个$watch求值多次:
也Angular进入$digest循环。该循环由两个较小的循环组成,分别处理$evalAsync队列和$watch列表。$digest循环继续迭代,直到模型稳定,这意味着$evalAsync队列为空,$watch列表没有检测到任何变化。——概述文档
在监听器注册到作用域后,监听器fn被异步调用(通过$evalAsync)来初始化监听器。在极少数情况下,这是不希望看到的,因为侦听器是在watchExpression的结果没有改变时调用的。——$watch docs
所以,至少需要两次
相关文章:
- 未捕获错误:无法在初始化之前调用方法;
- 通过ajax从客户端调用C#方法来执行C#方法
- 如何避免在angular上多次调用方法;s ng重复
- React路由器错误-'无法调用方法'getRouteAtDepth'的未定义'
- 从window.onbeforeunload调用方法背后的代码
- 当输入字段为空时,如何在angular中调用方法
- 函数调用方法有什么用
- 多次调用方法后返回相同promise的模式
- 当从Chrome扩展动态注入JS时,从onload()内部调用方法
- 茉莉花 - 未调用方法
- jQuery如何在原型中调用方法
- ng显示“;调用方法“;不起作用
- Odoo销售点如何访问模型并使用JS调用方法
- 从React调用方法.JS州
- TinyMCE验证给出错误:无法调用方法'getContent'的未定义
- 向模板实例变量传递调用方法调用的结果时出现异常
- 如何在对象中调用方法
- 检查对话框是否为 Open 会引发“初始化前无法在对话框上调用方法”错误
- 在输入类型提交按钮上调用 C# 方法
- 通过类选择器单独调用方法