Я пытаюсь сделать некоторую геолокацию и на основе координат вызвать RESTful API, который возвращает некоторые данные. Затем я хочу проанализировать эти данные и, наконец, вернуть их. Я новичок в angular.js и обещаниях, поэтому этот код представляет собой смесь вещей, которые я видел в Интернете: D
Я заставил все это работать, но упустил последний шаг: возврат обработанного массива результатов ("allSpots") исходному вызывающему абоненту. Что мне здесь не хватает?
.factory('wifiSpotFactory', function (WifinderModel, $q, $http) {
function onGeolocationSuccess(position) {
var url = 'http://localhost:34915/api/spots?latitude=' + position.coords.longitude + '&longitude=' + position.coords.latitude;
$http.get(url).then(function (response) {
var allSpots = [], data = response.data;
for (var i = 0; i < data.length; i++) {
var newSpot = new WifinderModel.wifiSpot(data[i].id, data[i].name, data[i].password, data[i].address);
allSpots.push(newSpot);
}
return allSpots;
}, function (error) {
console.log(error);
});
};
var wifiSpotFactory = {
loadNearSpots: function() {
var geo_options = {
enableHighAccuracy: true,
maximumAge: 50000,
timeout: 30000
};
var deferred = $q.defer();
navigator.geolocation.getCurrentPosition(deferred.resolve, deferred.reject, geo_options);
return deferred.promise
.then(onGeolocationSuccess)
.then(function(allSpots) { return allSpots; });
}
};
return wifiSpotFactory;
} )
Затем в контроллере, как мне получить значение обещания?
.controller('wifiListController', [
'$scope', 'wifiSpotFactory', function ($scope, wifiSpotFactory) {
$scope.spots = wifiSpotFactory.loadNearSpots();
}
])
WifinderModel.wifiSpot()
— ценность или обещание? - person Roamer-1888   schedule 29.10.2015