Ниже рекомендуемый способ получить данные в контроллер с завода, используя $ HTTP - по https://github.com/johnpapa/angularjs-styleguide
Что я не понимаю, как два успешных обратных вызовов на $ HTTP работы (я заметил, что я думаю два обратных вызова). 1) Какова точка первого обратного вызова? 2) Где указывает vm.avengers? Это ссылка на другой объект? 3) является «данными» во втором обратном вызове = «response.data.results» из первого? 4) Я подсчитал 3 общих обратных вызова, прикованных, это правильно?
P.S. я уже знаю об обещаниях, но хотите узнать эту модель специально
Завод
/* recommended */
// dataservice factory
angular
.module('app.core')
.factory('dataservice', dataservice);
dataservice.$inject = ['$http', 'logger'];
function dataservice($http, logger) {
return {
getAvengers: getAvengers
};
function getAvengers() {
return $http.get('/api/maa')
.then(getAvengersComplete)
.catch(getAvengersFailed);
//Callback One
function getAvengersComplete(response) {
return response.data.results;
}
function getAvengersFailed(error) {
logger.error('XHR Failed for getAvengers.' + error.data);
}
}
}
Контроллер
function Avengers(dataservice, logger) {
var vm = this;
vm.avengers = [];
activate();
function activate() {
return getAvengers().then(function() { //Callback 3
logger.info('Activated Avengers View');
});
}
function getAvengers() {
return dataservice.getAvengers()
.then(function(data) { //Callback 2
vm.avengers = data;
return vm.avengers;
});
}}
не уверен, почему это было приостановлено, кажется хорошим ответом на меня – Greg