@microf

Почему не работает resolve?

Прописываю в resolve ui-router и ничего не происходит. Ни ошибки в консоли, ничего. При переходе (точней при попытки перехода) на state должен вызываться сервис products.
(function () {
    'use strict';

    angular
        .module('products')
        .config(configProducts);

    configProducts.$inject = ['$stateProvider'];
    /* @ngInject */
    function configProducts($stateProvider) {

        // Products state routing
        $stateProvider
            .state('products', {
                url: '/products',
                templateUrl: 'app/products/products.html',
                controller : 'ProductsController',
                controllerAs : 'products',
                resolve: {
                    ProductsPrepService: function(products) {
                        console.log('resolve...')
                        return products.list();
                    }
                }
               
            });
    }
})();

Сервис products
(function () {
    'use strict';

    angular
        .module('products')
        .factory('products', products);

    products.$inject = [];

    /* @ngInject */
    function products() {
        var service = {
    list: list,
        };
        return service;

        ////////////////

        function list() {
             var data = [
                 {
                     'name': '1234567'
                 },

                 {
                     'name' : '987654321'
             }]
            return data;
        }
        }

})();

Контроллер
(function () {
    'use strict';

    angular
        .module('products')
        .controller('ProductsController', ProductsController);

    ProductsController.$inject = ['ProductsPrepService'];

    /* @ngInject */
    function ProductsController(ProductsPrepService) {
        var vm = this;


        activate();
        ////////////////

        function activate() {
            vm.products = ProductsPrepService.list();
            console.log(vm.products);

        }
    }

})();
  • Вопрос задан
  • 441 просмотр
Пригласить эксперта
Ответы на вопрос 2
@amatory10
помоему в строке: vm.products = ProductsPrepService.list(); - .list() будет лишним
Ответ написан
Комментировать
AMar4enko
@AMar4enko
Возьмите за правило в проектах на angularjs иметь следующий код:
.run(function($rootScope) {
   $rootScope.$on('$stateChangeError', function() {
        console.error(arguments[5]);
   });
});

Или используйте https://github.com/bendrucker/angular-router-excep...

Зачем вы используете принудительную нотацию $inject вместе с хелпером @ngInject для ngAnnotate? Если у вас сейчас включена минификация кода, то проблема из-за
resolve: {
                    ProductsPrepService: function(products) {

Элементы-функции резолв-секции тоже инжектируемые, без аннотаций в минифицированной версии работать не будут. А так как это резолв-секция, exception ангуляр выкинет в скоуп, а не в консоль.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы