AngularJs:在ng-show中进行双重检查

时间:2013-10-13 18:00:20

标签: javascript angularjs ng-show

为什么检查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>

如何让它停止?我只需要一张支票。

2 个答案:

答案 0 :(得分:2)

可能与Controller function getting called twice using ng-show相关联 - 引用:

  

在每个摘要周期,对于每个手表,AngularJS评估   关联表达式,看看是否有任何变化,如果有,   调用监听器(在ng-show/ng-hide的情况下),监听器   将根据ready())返回的值显示或隐藏元素。

答案 1 :(得分:1)

每个观察者都在摘要周期运行。重复摘要循环,直到结果都没有改变值(或角度防止无限循环)。这就是您的观察者多次运行的原因。最重要的是,不要依赖观察者只被射击一次,因为这违背了角度工作原理的基本规则。

如果您发布有关您尝试实现的内容的详细信息,我们可能会引导您找到实际适用于角度哲学的模式。