AngularJS子路由总是重定向到否则使用$ stateProvider

时间:2017-02-09 11:08:40

标签: angularjs routing angular-ui-router

我有这个路由配置,问题是每当我访问子路由时,它总是重定向到otherwise。在这种情况下,/login

$stateProvider
    .state('login', {
        url: '/login',
        templateUrl: 'views/login.html',
        controller: 'LoginController as loginCtrl',
    })
    .state('reports', {
        abstract: true,
        url: "/reports",
        templateUrl: 'views/container.html',
    })
    .state('reports.create', {
        url: '/reports-create',
        templateUrl: 'views/reports.html',
        controller: 'ReportsController as reportsCtrl',
    });

$urlRouterProvider.otherwise('/login');

我已将/reports设置为abstract:true。这是因为我不希望用户访问/reports,因此应将其重定向到/reports-create

现在,只要用户访问/reports/reports-create,他们就会始终重定向到/login

但如果我将reports.create设为create,我就可以访问/reports-create,但我也可以访问/reports,但不应该是这种情况。

1 个答案:

答案 0 :(得分:0)

  

现在,只要用户访问/ reports或/ reports-create,他们就会始终重定向到/ login

您无法访问/reports,因为它是抽象的。此外,您必须访问url上的reports-create:/reports/reports-create,因为抽象的父状态" prepends"它是儿童网址的网址。 请参阅此处的文档:Abstract states

还要确保父状态在其模板中的某个地方有一个ui-view,它是必需的,它是子状态模板将被呈现的位置(查看我上面链接的文档)

还有一件事:我会将我的子网址从/reports-create重命名为/create,这样最终网址会更好:/reports/create