Angularjs 延迟对象在通过$http加载数据时返回错误的结果
我有一个工厂,可以使用Angularjs中的Angularjs 延迟对象在通过$http加载数据时返回错误的结果,angularjs,deferred,Angularjs,Deferred,我有一个工厂,可以使用Angularjs中的$http和$q从文件中加载json数据 App.factory('dataLoader', ['$http', '$q', function($http, $q){ var deferred = $q.defer(), data = {}; return function (url){ data = $http.get(url) .suc
$http
和$q
从文件中加载json
数据
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工厂?承诺只能解决一次。此外,angular服务是单例服务,因此您对整个应用程序都有相同的承诺 尝试在返回的函数中创建承诺