Javascript 在其他方法中使用工厂方法
如何在一个工厂内使用同级方法Javascript 在其他方法中使用工厂方法,javascript,angularjs,Javascript,Angularjs,如何在一个工厂内使用同级方法 var app = angular.module('sampleApp', []); app.factory('utils', function($http, $timeout){ return { getData : function(url, func){ $http.get(url). success(func). error(function(da
var app = angular.module('sampleApp', []);
app.factory('utils', function($http, $timeout){
return {
getData : function(url, func){
$http.get(url).
success(func).
error(function(data, status){
alert("WRONG DATA!");
});
},
periodocalUpdate : function(url, period, func, stop){
if (!stop){
$timeout(function(){
utils.getData(url, func).periodocalUpdate(url, period, func);
}, period);
}
}
};
});
app.controller('myCtrl', ['$scope', 'utils', function($scope, utils){
$scope.updateUrl = 'sample.url';
utils.periodocalUpdate($scope.updateUrl, 2000, function(data){
console.log(data);
});
}]);
firebug在初始化时显示错误:
错误:未定义UTIL。periodocalUpdate/
我想这是概念上的错误,但我不明白在哪里
...
periodocalUpdate : function(url, period, func, stop){
if (!stop){
$timeout(function(){
//
// /- this utils is undefined.
// |
utils.getData(url, func).periodocalUpdate(url, period, func);
}, period);
}
}
...
尝试:
。。。
getData:函数(url,func){
...
返回此;/>错误:self.getData(…)未定义
...
getData : function(url, func){
...
return this; // <-- add this
},
periodocalUpdate : function(url, period, func, stop){
var self = this; // <-- and don't forget this
if (!stop){
$timeout(function(){
self.getData(url, func).periodocalUpdate(url, period, func);
}, period);
}
}
...