アプリで使用するデータを取得するためにいくつかの呼び出しを行うサービスがあります。データを読み込んだ後、別のサービスを呼び出してデータを操作する必要があります。問題は、2 番目のサービスが最初のサービスのデータにアクセスできないことです。
プランカーを作成しました: plunkr
最初のサービス
app.factory('Report', ['$http', function($http,$q){
var Authors = {
reports : [],
requests :[{'url':'data.json','response':'first'},
{'url':'data2.json','response':'second'},
{'url':'data3.json','response':'third'}]
};
Authors.getReport = function(target, source, response, callback) {
return $http({ url:source,
method:"GET",
//params:{url : target}
}).success(function(result) {
angular.extend(Authors.reports, result)
callback(result)
}
).error(function(error){
})
}
Authors.startQueue = function (target,callback) {
var promises = [];
this.requests.forEach(function (obj, i) {
console.log(obj.url)
promises.push(Authors.getReport(target, obj.url, obj.response, function(response,reports){
callback(obj.response,Authors.reports)
}));
});
}
return Authors;
}])
セカンドサービス
app.service('keyService', function(){
this.analyze = function(value) {
console.log(value)
return value.length
}
});
コントローラー
コントローラーでは、次のようなことを試します。
$scope.result = Report.startQueue('http://www.prestitiinpdap.it', function (response,reports,keyService) {
$scope.progressBar +=33;
$scope.progress = response;
$scope.report = reports;
});
$scope.test = function(value){
keyService.analyze($scope.report.about);
}