0

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

怎么让它停下来?我只需要一张支票。

4

2 回答 2

2

可能与使用 ng-show 调用两次 Controller 函数有关- 引用:

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

于 2013-10-13T18:09:59.667 回答
1

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

如果您发布有关您尝试实现的目标的详细信息,我们可能会引导您找到一种在角度哲学中实际有效的模式。

于 2013-10-13T18:20:15.893 回答