有些东西在控制器内多次调用我的函数

时间:2015-03-21 10:44:26

标签: angularjs

此函数(在控制器中声明)被调用16次:

$scope.test = function(hour){

    console.log("hi")

}

在我的html模板中使用ng-bind调用该函数:

<span ng-bind="test()"></span>

似乎我接下来要做的事情(例如,在我的应用程序的某处更改ng-show的值),呼叫计数增加1。

是否有任何理由发生这种情况(我认为消化周期),我该如何预防呢?我不认为它非常有效。

2 个答案:

答案 0 :(得分:0)

查看ngBind文档。这是指令的要点。它会在每个摘要中调用您的测试函数。

  

ngBind属性告诉Angular替换文本内容   指定具有给定表达式值的HTML元素,以及   当表达式的值发生变化时更新文本内容。

如果您使用的是角色1.3并且在稳定后不想更新该范围,则可以进行一次性绑定。

&#13;
&#13;
var app = angular.module('app', []);

app.controller('myController', function($scope) {
  $scope.counter = 1;
  
  $scope.increment = function() {
    $scope.counter++;
  }
  
  $scope.test = function(hour) {
    return $scope.counter;
  };
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<div ng-app="app">
  <div ng-controller="myController">
    {{ counter }}
    <div ng-bind="test()"></div>
    <div ng-bind="::test()"></div>
    <button ng-click="increment()">increment</div>
    
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

使用ng-init代替ng-bind,它将在第一次调用 所以而不是

<span ng-bind="test()"></span>

使用此

<span ng-init="test()"></span>