というサービスがありますMyArticles
。を使用$http GET
して、特定のカテゴリのすべての記事を収集します。サービスは、、 にMyArticles
挿入されControllerA
、が解決された後にいくつかのコマンドを実行する必要があります。ControllerB
ControllerC
MyArticles Promise
ControllerA, ControllerB, ControllerC
最初の初期化後に機能しますが、プロミスが解決された後、コマンドが初めて実行されるため、MyArticles のロードされたデータを reset() する必要がある場合はどうすればよいかわかりません。たとえば、別の Category から記事を取得したい場合はどうすればよいですか?
私はこれのパターンを見つけようとしており、次のように書いています。私が達成したいことを理解するのに役立つと思います:
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/でも入手できます。
約束を使用してデータを更新できるサービスが必要で、サービスが別のコントローラーなどに注入されている場合、何ができるのだろうか?
ご覧いただきありがとうございます。