控制器功能以角度调用两次

时间:2014-03-19 19:51:43

标签: angularjs angularjs-scope

我现在正处理棱角分明,而且我是一个全新的人,我已经为这个问题安排了一个小伙伴。

但总之,我不确定为什么附加到角度范围的函数会被调用两次。

脚本

var registrationModule = angular.module("registrationModule", []);
registrationModule.controller("NavigationController",  function ($scope) {
    $scope.menuItems = [{ text: 'Home'}];
    alert("hi");
    $scope.getClass = function (path) {
        alert("getClass");
        return "frank";
    };
});

HTML

<body ng-app="registrationModule">
<div class="collapse navbar-collapse navbar-responsive-collapse">
    <ul class="nav navbar-nav navbar-right" ng-controller="NavigationController">
        hi {{ getClass(); }} butcher
    </ul>
</div>
</body>

http://jsfiddle.net/6F55K/1/

任何提示?

2 个答案:

答案 0 :(得分:2)

Angular摘要循环以这种方式工作。您视图中的所有表达式都将至少执行一次

编译视图时,它将调用您的getClass()函数获取一个值,然后它将再次运行摘要循环,以查看自上次调用以来是否有任何更改。这就是它知道您的观点是最新的。

答案 1 :(得分:0)

诺埃尔的回答并不适合我。如何更改函数以便设置变量?

registrationModule.controller("NavigationController",  function ($scope) {
    $scope.menuItems = [{ text: 'Home'}];
    alert("hi");
    $scope.setClass = function (path) {
        alert("setClass");
        $scope.class = "frank";
    };
});

看看这个小提琴:http://jsfiddle.net/6F55K/3/