如何在一家工厂内使用兄弟方法?
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);
});
}]);
萤火虫在初始化时显示错误:
错误:未定义utils .periodocalUpdate /.....
我认为这是概念错误,但不明白在哪里。
答案 0 :(得分:1)
...
periodocalUpdate : function(url, period, func, stop){
if (!stop){
$timeout(function(){
//
// /- this utils is undefined.
// |
utils.getData(url, func).periodocalUpdate(url, period, func);
}, period);
}
}
...
尝试:
...
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);
}
}
...