Javascript 具有ControllerAs模式的函数被多次调用

Javascript 具有ControllerAs模式的函数被多次调用,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我按照controller的用法从创建一个controller,其中有一个函数可以从视图调用,比如ng if。然而,当我调用该函数时,它似乎被调用了三次,但我不知道它是如何发生的。 这是JSBin 作用{ 模块'app',[]; 功能测试{ console.log'init'; var vm=这个; vm.title=测试标题; vm.called=函数{ console.log'get called'; } } 有棱角的 .模块“应用程序” .控制器“测试”,测试; }; JS-Bin {{

我按照controller的用法从创建一个controller,其中有一个函数可以从视图调用,比如ng if。然而,当我调用该函数时,它似乎被调用了三次,但我不知道它是如何发生的。 这是JSBin

作用{ 模块'app',[]; 功能测试{ console.log'init'; var vm=这个; vm.title=测试标题; vm.called=函数{ console.log'get called'; } } 有棱角的 .模块“应用程序” .控制器“测试”,测试; }; JS-Bin {{vm.title}{{vm.called;}}
您无法控制对{{binding}中使用的表达式求值的次数。AngularJS每次认为它们的值可能发生变化时都会重新评估它们。换句话说,如果表达式包含函数调用,则每$digest调用一次

这意味着在AngularJS表达式中使用函数调用时,应该非常关注性能影响。通常,绑定到范围变量是可能的,而且更好。如果您在大型应用程序中使用此功能,其中$rootScope.$digest的调用频率更高,那么您将看到更多对同一函数的调用