Angular UI路由器子状态参数

问题描述:

我正在使用Angular 1.x和Angular UI路由器。
我正在寻找结合儿童的状态参数,像这样的方式:Angular UI路由器子状态参数

$stateProvider 
    .state('parameters', { 
     url: '/parametres', 
     templateUrl: 'views/profile/profile.html', 
     controller: 'profileCtrl' 
    }) 
    .state('parameters.personal', { 
     url: '/informations-personnelles', 
     params: {tab: 'personal'} 
    }) 
    .state('parameters.email', { 
     url: '/mails', 
     params: {tab: 'email'} 
    }) 
    .state('parameters.password', { 
     url: '/mot-de-passe', 
     params: {tab: 'password'} 
    }); 

当我尝试访问/parametres/mot-de-passe,我tab PARAM返回undefined值一样,如果它不绑定。我还尝试绑定parameters状态中的tab参数,但param返回我绑定的值。不是处于良好子状态的值...

我正在寻找一种即时获取当我打开一个子URL时,好的tab参数值。

感谢您的任何帮助。

子状态从父母继承其参数。所以如果你不在父母的名字中,他们就不会在孩子身上。在你的情况下,看起来你有3个孩子状态,但没有父母。此外,你说你试图访问一个不存在的状态,这可能是你没有得到你期望的另一个原因。

+0

“所以,如果你不在父母名下,他们不会在孩子“ 我对这个答案感到困惑......通过在子状态中使用'parameters.',父母被加载(我可以显示模板,并且控制器也加载,所以......)。 – Bardyl

使用$state.params而不是$stateParams。您应该能够访问前者的所有参数。

这里唯一需要注意的是确保你的参数有不同的名字,所以你没有冲突。

它可能发生,因为在您的父控制器中,您传递一些值,但不能解决在父控制器中相同。

所以父母控制器$stateParams.someVal如果不存在于子控制器中,那么它将抛出未定义。 所以你必须把解决财产一样,父状态:

$stateProvider.state('contacts.detail', { 
    url: '/contacts/:contactId', 
    controller: function($stateParams){ 
      $stateParams.contactId //*** Exists! ***// 
    }, 
    resolve:{ 
     contactId: ['$stateParams', function($stateParams){ 
      return $stateParams.contactId; 
      }] 
    } 
    }).state('contacts.detail.subitem', { 
      url: '/item/:itemId', 
      controller: function($stateParams, contactId){ 
       contactId //*** Exists! ***// 
       $stateParams.itemId //*** Exists! ***// 
      } 
    }) 

像上面u需要做的

请点击此处查看:https://github.com/angular-ui/ui-router/wiki/URL-Routing