我想从$ 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
答案 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;