Javascript AngularJS服务不是';t返回数据
我必须Javascript AngularJS服务不是';t返回数据,javascript,angularjs,asynchronous,Javascript,Angularjs,Asynchronous,我必须AngularJS服务将数据加载到我的应用程序中,这些应用程序的设置基本上是相同的,尽管一个可用,一个不可用 angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives']) .service('uniqueLists', function ($http) { console.log("Getting Unique Lists") var itemsToList = [
AngularJS
服务将数据加载到我的应用程序中,这些应用程序的设置基本上是相同的,尽管一个可用,一个不可用
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives'])
.service('uniqueLists', function ($http) {
console.log("Getting Unique Lists")
var itemsToList = [
'designer',
'store',
'category'
]
var uniqueLists = {};
var promise = (function(){
console.log("Inside Function")
for (var i = 0; i<itemsToList.length; i++){
var item = itemsToList[i];
uniqueLists[item] = [];
$http.get('/api/uniques/' + item, { cache: true}).
success(function (data){
uniqueLists[item] = data.query;
console.log(i + " out of " + itemsToList.length);
if (i == itemsToList.length -1){
return uniqueLists;
}
});
};
})();
return promise;
})
反过来,在我的应用程序中,当我尝试使用uniquelist
时:
function homeCtrl($scope, $location, uniqueLists, userInfo){
uniqueLists.then(function(obj){
// Do stuff
});
}
我得到错误TypeError:Object[Object Object]没有方法'then'
有没有办法解决这个问题?$http.get
api调用工作正常,所以我认为这只是一个阻塞/异步问题。试试这个未经测试的代码
angular.module('myApp', [])
.service('uniqueLists', function ($http, $q) {
console.log("Getting Unique Lists")
var itemsToList = [
'designer',
'store',
'category']
var uniqueLists = {};
var promises = []
console.log("Inside Function")
for (var i = 0; i < itemsToList.length; i++) {
var item = itemsToList[i];
promises.push(http.get('/api/uniques/' + item, {
cache: true
}));
};
var defered = $q.defer();
$q.all(promises).then(function (data) {
for (var i = 0; i < data.length; i++) {
var item = itemsToList[i];
uniqueLists[item] = data[i].query;
}
defered.resolve(uniqueLists);
}, function (error) {
defered.reject(error)
});
return defered.promise;
})
angular.module('myApp',[])
.service('uniquelist',函数($http,$q){
log(“获取唯一列表”)
var itemsToList=[
“设计师”,
“商店”,
“类别”]
var uniquelist={};
var承诺=[]
console.log(“内部函数”)
对于(var i=0;i
angular.module('myApp', [])
.service('uniqueLists', function ($http, $q) {
console.log("Getting Unique Lists")
var itemsToList = [
'designer',
'store',
'category']
var uniqueLists = {};
var promises = []
console.log("Inside Function")
for (var i = 0; i < itemsToList.length; i++) {
var item = itemsToList[i];
promises.push(http.get('/api/uniques/' + item, {
cache: true
}));
};
var defered = $q.defer();
$q.all(promises).then(function (data) {
for (var i = 0; i < data.length; i++) {
var item = itemsToList[i];
uniqueLists[item] = data[i].query;
}
defered.resolve(uniqueLists);
}, function (error) {
defered.reject(error)
});
return defered.promise;
})