Решение $ routeProvider не получает объект из обещания

У меня возникли проблемы с попыткой получить массив объектов из обещания. У меня две проблемы. Во-первых, когда GetAccounts() вызывается в AccountService, он возвращает 2 объекта. В решении, когда я проверяю результат переменной, у него нет двух объектов. Во-вторых, когда создается экземпляр контроллера, он выдает ошибку: accounts не определен. Может ли кто-нибудь сказать мне, что я делаю неправильно? Заранее спасибо.

AccountService.js

app.factory('AccountService', ['$http', function ($http) {
    return {
        GetAccounts: function () {
            return $http.get('api/Account/GetAccounts')
            .then(function success(response) {
                return response.data;
            }, function error(response) {
                return console.log("Oops!");
            });
        }
    };
}]);

AdminController.js

app.component('admin', {
    templateUrl: 'Content/app/components/admin/Admin.html',
    bindings: {
        accounts: '<'
    },
    controller: function () {
        this.accounts = accounts;
    }
})

route.js

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.when('/admin', {
        template: '<admin accounts="$resolve.GetAccounts"></admin>',
        resolve: {
            GetAccounts: ['AccountService', function (AccountService) {
                var result = AccountService.GetAccounts();

                return result;
            }]
        }
    })
}]);

person Ron T    schedule 06.04.2017    source источник
comment
вы действительно создали API?   -  person floor    schedule 06.04.2017
comment
да, я создал API, поэтому я могу получить 2 объекта @floor   -  person Ron T    schedule 06.04.2017
comment
@georgeawg да, это был мой другой пост из моей рабочей учетной записи, но по какой-то причине я не могу получить объекты. Единственная разница с моим другим постом в том, что я использовал веб-пакет, а этот - нет.   -  person Ron T    schedule 06.04.2017


Ответы (1)


Внесите следующие изменения, чтобы заставить его работать.

Админконтроллер.js

app.component('admin', {
    templateUrl: 'Content/app/components/admin/Admin.html',
    bindings: {
        accounts: '<'
    }    })

route.js

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.when('/admin', {
        template: 'template.html',
        resolve: {
            GetAccounts: ['AccountService', function (AccountService) {
                var result = AccountService.GetAccounts();

                return result;
            }]
        },
        controller:['$scope','GetAccounts',function($scope, GetAccounts){
           $scope.accounts = GetAccounts;
        }]
    })
}]);

шаблон.html

<div>
<admin accounts="accounts"></admin>
</div>
person Kalyan    schedule 06.04.2017