0

我有一个Service和一个Controller。控制器调用一个函数,getItems()Service. Service返回一个array数据。

然而,控制器似乎没有收到这个,奇怪的是。

控制器:

ItemModule.controller('ItemController', ['$scope', 'ItemService',
    function ($scope, ItemService) {

        $scope.items = [];

        $scope.getItems = function() {
            $scope.items = ItemService.getItems();
        }

        $scope.getItems();

    }
]);

服务:

ItemModule.service('ItemService', ['$rootScope', '$http', 
    function($rootScope, $http) {

        this.getItems = function() {
            $http.get($rootScope.root + '/products').success(function(data) {
                // This prints it out fine to the console
                console.log(data);
                return data;
            });
        }

    }
]);

我究竟做错了什么?

4

1 回答 1

0

一个快速而肮脏的修复将是这样的:

ItemModule.service('ItemService', ['$rootScope', '$http', 
function($rootScope, $http) {

    return {
        getItems : function(scope) { 
            $http.get($rootScope.root + '/products').success(function(data) {
                scope.items = data;
            });
        }
    }

}
]);

然后在你的控制器中调用:

 ItemService.getItems($scope);

但是,如果您的控制器是路由的一部分(并且可能是),那么使用起来会更好resolve(看这里)。

于 2013-11-14T14:59:44.030 回答