Angular.js 和 Angular Style Guide 的问题



我在尝试遵循 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回调中。

最新更新