我正在尝试将代码中的数据带到我的应用程序中,这里是工厂。
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());
}
})
当它加载时,它只会加载任何或两个看起来像这样的对象:''
我不知道为什么,因为我似乎无法辨别出任何问题,我觉得我已经把这个看成是死的。我已经使用jsFiddle测试了返回函数,它工作正常,所以它与ionic / cordova有关,我相当肯定。
答案 0 :(得分:1)
在您的工厂做,
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 = []; //storing locations for future usage
return {
all: function () {
return $http.jsonp(url)
.then(function (result) {
locations = result.data;
return result.data;
});
},
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) {
Locations.all().then(function (locations) {
$scope.locations = locations;
});
$scope.createMarks = function () {
createList(Locations.all());
}
})
现在,Locations.all()方法将返回一个promise,该promise将解析为控制器中的 result.data ,您可以访问位置。
以前您没有返回任何内容,因此$ scope.locations未定义。