Проблемы с AngularJS UI роутером при подсистеме маршрутизации - PullRequest
0 голосов
/ 08 июня 2018

На самом деле не знаю, что здесь происходит, я делал это миллионы раз раньше.

Следующая конфигурация приводит к выполнению корневого состояния , даже когда маршрут совпадает сподсостояние.

module.config(['$stateProvider', function($stateProvider) {
    $stateProvider.state('apps-neo',{
        url: '/apps/neo/',
        template: '<a ui-sref="apps-neo.a({id: 1})">test</a>',
        controller: function(){
            console.log('parent controller')
        },
        navbar: 'apps'
    }).state('apps-neo.a',{
        url: 'a/:id',
        template: 'a',
        controller: function($stateParams){
            console.log($stateParams.id)
        },
        navbar: 'apps'
    });
}

Случай 1 GET /apps/neo/

Я активировал родительское состояние, и это правильно.Журналы консоли родительский контроллер , и на экране отображается ссылка test .

Случай 2 GET /apps/neo/a/1

Я все еще получаюродительское состояние активировано, что странно.Журналы консоли родительский контроллер и представление показывает ссылку test .


Если я перейду к следующему, в основном удаляя иерархию состояний, все будет работать, как и ожидалось.

module.config(['$stateProvider', function($stateProvider) {
    $stateProvider.state('apps-neo',{
        url: '/apps/neo/',
        template: '<a ui-sref="apps-neo.a({id: 1})">test</a>',
        controller: function(){
            console.log('parent controller')
        },
        navbar: 'apps'
    }).state('apps-neo-a',{ // <------ do not make this state nest from previous
        url: '/apps/neo/a/:id',
        template: 'a',
        controller: function($stateParams){
            console.log($stateParams.id)
        },
        navbar: 'apps'
    });
}

Случай 1 GET /apps/neo/

Я активировал состояние apps-neo, что является правильным.Журналы консоли родительский контроллер .

Случай 2 GET /apps/neo/a/1

Я активировал состояние apps-neo-a, что является правильным.Журналы консоли 1 и вид показывает a .


Есть идеи?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Проблема в том, что вы не объявляете пользовательский интерфейс в родительском шаблоне.

Когда приложение находится в определенном состоянии, когда состояние «активно», все состояния его предка также неявно активны.

Дочерние штаты загрузят свои шаблоны в пользовательский интерфейс своих родителей.

введите код здесь

module.config(['$stateProvider', function($stateProvider) {
$stateProvider.state('apps-neo',{
    url: '/apps/neo/',
    template: '<a ui-sref="apps-neo.a({id: 1})">test</a><div ui-view</div>',
    controller: function(){
        console.log('parent controller')
    },
    navbar: 'apps'
}).state('apps-neo-a',{ // <------ do not make this state nest from previous
    url: 'a/:id',
    template: 'a',
    controller: function($stateParams){
        console.log($stateParams.id)
    },
    navbar: 'apps'
});

}

0 голосов
/ 08 июня 2018

Вы должны добавить еще один ui-view в родительское состояние для отображения вложенных состояний.

Например:

template: `<a ui-sref="apps-neo.a({id: 1})">test</a>
           <hr/>
           <div ui-view></div>`,
...