我有这个路由配置,问题是每当我访问子路由时,它总是重定向到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
,但不应该是这种情况。
答案 0 :(得分:0)
现在,只要用户访问/ reports或/ reports-create,他们就会始终重定向到/ login
您无法访问/reports
,因为它是抽象的。此外,您必须访问url上的reports-create:/reports/reports-create
,因为抽象的父状态" prepends"它是儿童网址的网址。
请参阅此处的文档:Abstract states
还要确保父状态在其模板中的某个地方有一个ui-view
,它是必需的,它是子状态模板将被呈现的位置(查看我上面链接的文档)
还有一件事:我会将我的子网址从/reports-create
重命名为/create
,这样最终网址会更好:/reports/create
。