初始化多次触发的角度控制器代码

时间:2016-03-14 18:39:27

标签: javascript angularjs

我有一个Angular控制器,我有一些设置代码,我只想触发一次。所以我把代码放在控制器里面。但由于某种原因,我可以看到代码被执行多次。

.controller('MyController', function ($rootScope, $scope, $compile, $http, $filter, $q, MyService) {

    alert('should be fired only once!');

我认为罪魁祸首是在closeTimes函数中,它基本上隐藏了计时器之后的时间html控件。

  $scope.closeTimes = function() {
        // create a promise to fire a function when this animation finishes
        var deferred = $q.defer();
        var element = document.querySelector(".time-box");
        var innerElement = document.querySelector(".inner");

        // animate the box closed
        move(element)
          .ease('ease-out-cubic') //used by animate.css
          .set('height', '0px')
          .duration('.25s')
          .end();
        move(innerElement)
          .ease('ease-out-cubic')
          .set('height', '0px')
          .duration('.25s')
          .end(function () {

            element.remove();
            deferred.resolve();

          });
          // return promise
          return deferred.promise;
      };

closeTimes使用承诺如下:

 $scope.closeTimes().then(function() {
                //  // now show the new selected date
                  $scope.openTimes(selectedSlot);
                });

出于某种原因,当我调用closeTimes函数时,它会自动调用alert('应该只被触发一次!');码。为什么要再次初始化代码。

0 个答案:

没有答案