2017-03-07 146 views
0

我正在使用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參數值。

感謝您的任何幫助。

回答

0

子狀態從父母繼承其參數。所以如果你不在父母的名字中,他們就不會在孩子身上。在你的情況下,看起來你有3個孩子狀態,但沒有父母。此外,你說你試圖訪問一個不存在的狀態,這可能是你沒有得到你期望的另一個原因。

+0

「所以,如果你不在父母名下,他們不會在孩子「 我對這個答案感到困惑......通過在子狀態中使用'parameters.',父母被加載(我可以顯示模板,並且控制器也加載,所以......)。 – Bardyl

0

使用$state.params而不是$stateParams。您應該能夠訪問前者的所有參數。

這裏唯一需要注意的是確保你的參數有不同的名字,所以你沒有衝突。

0

它可能發生,因爲在您的父控制器中,您傳遞一些值,但不能解決在父控制器中相同。

所以父母控制器$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

相關問題