コード内のデータをアプリケーションに取り込もうとしていますが、ここには工場があります。
angular.module('starter.services', [])
.factory('Locations', function ($http, $q) {
// Might use a resource here that returns a JSON array
var url = "https://portal.mobilequbes.com/api/kiosks?callback=JSON_CALLBACK";
var locations = function() {
$http.jsonp(url)
.then(function (result) {
return result.data;
});
};
return {
all: function() {
return locations;
},
get: function (locId) {
for (i = 0; i < locations.length;i++){
if (locations[i].friendlyName == parseInt(locId)) {
return locations[i];
}
}
}
}
});
と私のコントローラ:それは読み込むとき
.controller('MapCtrl', function ($scope, $http, Locations) {
$scope.locations = Locations.all();
$scope.createMarks = function() {
createList(Locations.all());
}
})
は、それだけでこのようになり、何もまたは2つのオブジェクトをロードします。
が、私はなぜ私がように見えることはできませんので、確認していません「」何か問題があると分かり、私はこれを死に読むように感じる。私はjsFiddleを使ってリターン関数をテストしました。それはうまく働いたので、イオン/コードバと何か関係があります。かなり確信しています。あなたの工場で
'locations'関数は常にundefinedを返します。' return result.data; 'は' locations'コールバック関数ではなく '.then'コールバック関数を返します。 –
どうすれば修正できますか? – Peter
実際に申し訳ありませんが、私はすぐに完全な答えを書く時間がありません。この似たような質問への答えは正しい方向にあなたを指摘する必要があります:http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call-これは '$ http'が使うAPIなので、特に約束します。 –