为什么检查ng-show(或其他)等指令中的任何表达式都是重复的?我制作了简单的jsfiddle示例http://jsfiddle.net/fA5YX/。请参阅浏览器控制台。
<div ng-app ng-controller="ctrl" ng-show="test()">shown</div>
<script>
function ctrl($scope) {
$scope.test = function() {
console.log('check');
return true;
}
}
</script>
如何让它停止?我只需要一张支票。
答案 0 :(得分:2)
可能与Controller function getting called twice using ng-show相关联 - 引用:
在每个摘要周期,对于每个手表,AngularJS评估 关联表达式,看看是否有任何变化,如果有, 调用监听器(在
ng-show/ng-hide
的情况下),监听器 将根据ready()
)返回的值显示或隐藏元素。
答案 1 :(得分:1)
每个观察者都在摘要周期运行。重复摘要循环,直到结果都没有改变值(或角度防止无限循环)。这就是您的观察者多次运行的原因。最重要的是,不要依赖观察者只被射击一次,因为这违背了角度工作原理的基本规则。
如果您发布有关您尝试实现的内容的详细信息,我们可能会引导您找到实际适用于角度哲学的模式。