基本的に同じ方法で設定されたアプリにデータをロードする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;
})
私の主な問題は、$http
呼び出しが非ブロッキングであることだと思います。たとえば、次のようconsole.log(i + " out of " + itemsToList.length)
に表示されます。
3 out of 3
3 out of 3
3 out of 3
次に、私のアプリで次のuniqueLists
ように使用しようとすると:
function homeCtrl($scope, $location, uniqueLists, userInfo){
uniqueLists.then(function(obj){
// Do stuff
});
}
エラーが発生しますTypeError: Object [object Object] has no method 'then'
これを修正する方法についてのアイデアはありますか? API呼び出しは$http.get
問題なく機能するので、ブロッキング/非同期の問題だと思います。