2017-03-07 16 views
0

角度UIルーターで角度1.xを使用しています。私はこのような子の状態でパラメータをバインドする方法を探しています
角度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パラメータをバインドしようとしましたが、パラメータはバインドしている値を返します。

私は即座に取得する方法を探しています子URLを開いたときに良いtab param値。

ありがとうございました。

答えて

0

子ステートは、親からパラメータを継承します。だから、あなたが親の中にそれらの名前をつけなければ、彼らは子供の中にいません。あなたのケースでは、3つの子州にはあるが、親ではないようだ。また、存在しない状態にアクセスしようとしたと言いました。これは、あなたが期待していない別の理由かもしれません。

+0

を「あなたはドンので、もし」子供の状態で '名前をつけて、彼らは子供の中にいないでしょう。" 私はこの答えについて混乱しています...子供の状態で 'parameters.'を使うと、親がロードされますコントローラもロードされているので...)。 – Bardyl

0

$stateParamsの代わりに$state.paramsを使用してください。前者のすべてのパラメータにアクセスできるはずです。

ここで注意しなければならないのは、パラメータが異なる名前になっていることを確認して、衝突がないようにすることです。

0

親コントローラでは値を渡しているが、親コントローラでは同じ値を解決していないために発生する可能性があります。

親コントローラ$stateParams.someVal子コントローラに存在しない場合は未定義です。 はそうあなたがそのような親の状態でresolveプロパティを配置する必要があります:uは

ことを行う必要があり、上記のような

$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! ***// 
      } 
    }) 

何かをここでそれを確認してください:https://github.com/angular-ui/ui-router/wiki/URL-Routing

関連する問題