AngularJS控制器内部的函数被调用两次

时间:2019-05-09 11:04:19

标签: javascript angularjs angularjs-scope

我有一个匿名函数绑定到AngularJS中的$scope。问题是该函数被调用了两次,因此“ Hello!” 被警告两次。

我在函数上没有明确定义的watch

我知道这与Angular 消化周期有某种联系,但是我无法理解。

angular.module("root", [])
  .controller("index", function($scope) {
    $scope.myObj = {};
    $scope.myObj.text = function() {
      alert("Hello!");
      return "<b>Hello!</b>";
    }
  });
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.min.js"></script>
<html>

  <body ng-app="root">
    <p ng-controller="index">
      <span ng-bind-html-unsafe="myObj.text()"></span>
    </p>
  </body>

</html>

1 个答案:

答案 0 :(得分:0)

一种快速且可能(肮脏)的解决方法是

angular.module("root", [])
  .controller("index", function($scope) {
    var initializeController = false;
    $scope.myObj = {};
    $scope.myObj.text = function() {
      if (!initializeController) {
        initializeController = true;
        alert("Hello!");
        return "<b>Hello!</b>";
      }
    }
  });