在angularjs中从$ interval调用一个函数

时间:2014-12-23 09:25:24

标签: angularjs angularjs-directive

我想从$ interval的超时中调用一个函数。

angular.module('myApp').factory('myFactory',function($interval){

    var stop;
    return{
        start : function() {
            if(angular.isUndefined(stop)){
                stop = $interval(function() {
                        function1();
                    }
                    ,  30000);
            }
        },

        function1 : function() {
            console.log('In function1');
            function2();
        },

        function2 : function() {
            console.log('In function2');
        }

    }
});

我得到的错误是

  

TypeError:undefined不是函数

请让我知道可能是什么原因以及如何解决相同的问题

谢谢, NG-R

1 个答案:

答案 0 :(得分:2)

我的建议是在返回对象之外移动函数的定义,请参阅下面的演示



var app = angular.module('app', []);
angular.module('app').factory('myFactory', function($interval) {

  function start() {
    $interval(function() {
      function1();
    }, 3000);
  }


  function function1() {
    console.log('In function1');
    function2();
  }

  function function2() {
    console.log('In function2');
  }




  return {
    start: start,
    function1: function1,
    function2: function2
  };
});
app.controller('homeCtrl', function($scope, myFactory) {



  myFactory.start();


});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body>
  <div ng-app="app">
    <div ng-controller="homeCtrl">


    </div>
  </div>
</body>
&#13;
&#13;
&#13;