我在尝试遵循 Angular 样式指南 (https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#data-services) 时正确获取数据服务时遇到问题
我确定这对更有经验的人来说是显而易见的,但我无法将数据集正确分配给 vm.items 之外的
数据服务
(function() {
'use strict';
angular
.module('portfolioApp')
.factory('portfolioService', portfolioService);
portfolioService.$inject = ['$http', 'logger'];
function portfolioService($http, logger) {
return {
getPortfolioData: getPortfolioData,
};
function getPortfolioData() {
return $http.get('./assets/portfolio/portfolioItems.json')
.then(getPortfolioDataComplete)
.catch(getPortfolioDataFail);
function getPortfolioDataComplete(response) {
return response.data;
}
function getPortfolioDataFail(error) {
logger.error('XHR Failed for getPortfolioData.' + error.data);
}
}
}
}());
控制器
.controller('portfolioController', ['$scope', '$http', '$stateParams', 'logger', 'portfolioService', function($scope, $http, $stateParams, logger, portfolioService) {
var vm = this;
vm.items = [];
activate();
function activate() {
return getData().then(function() {
logger.info('Activate the portfolio view');
});
}
function getData() {
return portfolioService.getPortfolioData()
.then(function(data) {
vm.items = data;
return vm.items;
});
}
console.log("test")
console.log(vm.items);
console.log("test")
}])
你的getData
函数是一个承诺,所以它是异步运行的。您的console.log
在承诺结束之前被调用,因此vm.items
仍然是空的。
尝试将日志放在then
回调中。