我有一个服务叫MyArticles
. 使用$http GET
,收集给定类别的所有文章。MyArticles
服务被注入, ControllerA
, ControllerB
,解决ControllerC
后应该运行一些命令MyArticles Promise
。
在第一次初始化后工作,但如果我需要 reset() MyArticles 的加载数据,我不知道该怎么做,因为在ControllerA, ControllerB, ControllerC
承诺解决后,第一次运行中的命令。例如,如果我想从不同的 Category 获取 Articles 怎么办?
我试图为此找到一个模式,我写了以下内容,我想这有助于理解我想要实现的目标:
var MyApp = angular.module('MyApp', []);
MyApp.config(function($locationProvider){
$locationProvider.hashPrefix('!');
});
MyApp.factory('MyService', function($q,$timeout){
var deferred;
var loadData = function(){
deferred = $q.defer();
$timeout(function(){
deferred.resolve({
myData: "test"
});
}, 250);
};
return {
reset: function(){
loadData();
},
getPromise: function(){
return deferred.promise;
}
};
});
MyApp.controller('MyCtrl', function($scope,MyService){
$scope.foo = "Service share data";
MyService.reset();
MyService.getPromise().then(function(data){
console.log(data);
});
});
*该示例也可在以下网址获得:http: //jsbin.com/OCaNehe/2/
我想知道我能做什么,如果我需要一个服务 - 使用承诺 - 应该能够刷新数据并且服务被注入不同的控制器等?
感谢您的关注!