有没有办法让#/和#/:param成为UI-Router中的独立状态?

时间:2016-01-28 16:06:08

标签: angularjs angular-ui-router state

问题:

当我导航到#/时,它会尝试加载位于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中查看注册的路由和顺序?这在调试过程中会非常有用。

1 个答案:

答案 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',
...