问题:
当我导航到#/
时,它会尝试加载位于profile
的{{1}}状态。
所以我对这个功能完全感到困惑,因为它似乎是断断续续的。我已经提到了this question,看来洗牌顺序没有任何影响。
我希望用UI-Router获得干净的路由:
#/:userId
这是用户的根仪表板
#/
这是一个特定的用户个人资料
#/123
这是其他一些路线。
#/my/preferences
问题:
有没有办法让{-1}}, $stateProvider
.state('profile', {
abstract: true,
url: '/:userId',
templateUrl: 'profile-user.html',
controller: 'ProfileController',
controllerAs: 'vm',
reloadOnSearch: false,
resolve: {
data: function() {
// some promises stuff
}
}
})
.state('profile.activity', {
url: '',
templateUrl: 'activity.html'
})
.state('dashboard', {
url: '/',
templateUrl: 'dashboard.html',
controller: 'DashboardController',
controllerAs: 'vm',
reloadOnSearch: false,
resolve: {
data: function() {
// some promises stuff
}
}
})
.state('preferences', {
url: '/my/preferences',
templateUrl: 'preferences.html',
controller: 'PreferencesController',
controllerAs: 'vm',
reloadOnSearch: false,
resolve: {
data: function() {
// some promises stuff
}
}
})
和#/
在UI-Router中处于不同的状态?另外,有没有办法在UI-Router中查看注册的路由和顺序?这在调试过程中会非常有用。
答案 0 :(得分:0)
当UI-Router尝试解析状态时,顺序是必不可少的。因此,定义更具体的状态应该比通用状态更早定义:
// the specific will be checked first
.state('dashboard', {
url: '/',
...
.state('preferences', {
url: '/my/preferences',
...
// these will be used if above not matched
.state('profile', {
abstract: true,
url: '/:userId',
...