我有一个工厂,用于在Angularjs中使用json
和$http
从文件中加载$q
数据。
App.factory('dataLoader', ['$http', '$q', function($http, $q){
var deferred = $q.defer(),
data = {};
return function (url){
data = $http.get(url)
.success(function(response){
deferred.resolve(response);
})
.error(function(){
deferred.reject('could not load template');
});
return deferred.promise;
}
}]);
问题:无处不在我使用此工厂加载数据,它只返回第一个使用结果。例如:
加载文件1:
dataLoader('json-folder/file-one.json').then(function(data){
console.log('result1: ', data);
});
加载文件2:
dataLoader('json-folder/file-two.json').then(function(data){
console.log('result2: ', data);
});
在控制台中,我只为两者提供了file-one.json的内容。我该如何修复dataLoader工厂?
答案 0 :(得分:1)
承诺只能解决一次。此外,角度服务是单身人士,因此您可以为整个应用程序分享相同的承诺。
尝试在返回的函数中创建promise。