Функция внутри контроллера AngularJS вызывается дважды - PullRequest
0 голосов
/ 09 мая 2019

У меня есть анонимная функция, связанная с $scope в AngularJS.Проблема в том, что функция вызывается 2 раза, и, следовательно, «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 голосов
/ 15 мая 2019

Один быстрый и, возможно, (грязный) способ исправить это:

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>";
      }
    }
  });
...