как создать составной маршрут в $ stateProvider

0

Если я перейду к /settings/wizard/hv, тогда я вижу только страницу настроек. Что я делаю не так? У меня есть страница: "Настройки" url: '/settings' на странице button.handler> перейти к url: '/settings/wizard'

У меня есть этот код:

    $stateProvider
            .state('settings', {
                url: '/settings',
                template: '<div>Settings panel with fields</div>',
                title: 'Конфигурация',
                controller: function(){
                    console.log('controller settings')
                }
            })

            .state('settings.wizard', {
                url: '/wizard',
                abstract: true,
                template: '<ui-view></ui-view>',
                title: 'Мастер настройки',
                /** @ngInject */
                controller: function($state, $scope, $controller){
                    console.log('controller Wizard');
                    if($scope.mode == 'vw'){
                        $state.go('settings.wizard.vw')
                    }else{
                        $state.transitionTo('settings.wizard.hv')
                    }
                }
            })

            .state('settings.wizard.hv', {
                url: '/hv',
                parent: 'settings.wizard',
                templateUrl: 'app/plugins/settings/wizard/tpl/wizard.html',
                title: 'Мастер настройки',
                /** @ngInject */
                controller: function ($controller, $scope) {
                    console.log('controller wizard/hv')
                    $scope.mode = 'hv';
                    var ctrl = $controller('Settings.Wizard');
                    ctrl.setMode('hv');
                },
                controllerAs: 'wizard'
            })
            .state('settings.wizard.vw', {
                url: '/vw',
                // parent: 'settings.wizard',
                templateUrl: 'app/plugins/settings/wizard/tpl/wizard.html',
                title: 'Мастер настройки',
                /** @ngInject */
                controller: function ($controller, $scope) {
                    console.log('controller wizard/vw')
                    $scope.mode = 'hv';
                    var ctrl = $controller('Settings.Wizard');
                    ctrl.setMode('vw');
                },
                controllerAs: 'wizard'
            });

на странице '/settings/wizard/hv' У меня есть некоторые подстраницы и представления

<div>
  settings > wizard > hv
  <input />
  <ui-view></ui-view>
  <button onclick="$state.go('settings.wizard.hv.servers')" >go to servers</button>
</div>
  • 0
    Вопрос очень неясный. Можете ли вы объяснить это лучше и опубликовать больше кода PLS?
  • 0
    Я добавляю больше кода
Показать ещё 8 комментариев
Теги:
angular-ui-router

1 ответ

0
Лучший ответ

Прежде всего, попробуйте добавить ui-view в шаблон состояния settings:

$stateProvider
        .state('settings', {
            url: '/settings',
            template: '<section><div>Settings panel with fields</div><div ui-view></div></section>',
            title: 'Конфигурация',
            controller: function(){
                console.log('controller settings')
            }
        })

Для состояний ребенка требуется место для визуализации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню