0
以下是推薦的方式使用$ HTTP來獲取數據從一個工廠的控制 - 根據https://github.com/johnpapa/angularjs-styleguide
什麼,我不明白的是如何在$ HTTP工作兩個成功的回調(我評論什麼,我想兩個回調是)。 1)第一個回調的要點是什麼? 2)vm.avengers指向哪裏?它是對另一個對象的引用嗎? 3)第二個callback中的'data'='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;
});
}}
不知道爲什麼這是downvoted,似乎是一個很好的答案給我 – Greg 2014-11-03 04:02:00