2017-03-07 3 views
0

Ich benutze Angular 1.x mit Angular UI Router.
Ich bin auf der Suche nach einem Weg, wie diese Parameter in den Kindern Staaten zu binden:Angular UI Router Kind Zustand Parameter

$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'} 
    }); 

Wenn ich versuche, /parametres/mot-de-passe zuzugreifen, mein tab param gibt undefined Wert wie wenn es nicht binden wird. Ich habe auch versucht, die tab Parameter im parameters Zustand zu binden, aber der Parameter gibt den Wert, ich bin verbindlich in.

Ich bin auf der Suche nach einer Möglichkeit, sofort zu bekommen der gute tab param Wert, wenn ich eine untergeordnete URL öffne.

Danke für jede Hilfe zu diesem Thema.

Antwort

0

Untergeordnete Zustände erben ihre Parameter von ihren Eltern. Also, wenn Sie sie nicht im Elternteil nennen, werden sie nicht im Kind sein. In Ihrem Fall scheint es, dass Sie sie in 3 Kinderzuständen, aber nicht im Elternteil haben. Sie haben auch gesagt, dass Sie versucht haben, auf einen Zustand zuzugreifen, der nicht existiert, was ein weiterer Grund sein könnte, warum Sie nicht das bekommen, was Sie erwarten.

+0

„Also, wenn Sie don‘ t nennen sie sie in der Eltern, sie werden nicht in der Kind " Ich bin verwirrt über diese Antwort ... Durch die Verwendung von' parameters.in Child States, die Eltern ist geladen (ich kann die Vorlage zeigen, und die Controller ist auch so geladen ...). – Bardyl

0

Verwenden Sie $state.params anstelle von $stateParams. Sie sollten in der Lage sein, auf alle Parameter von ersterem zuzugreifen.

Der einzige Vorbehalt hier ist sicherzustellen, dass Ihre Params unterschiedliche Namen haben, so dass Sie keine Zusammenstöße haben.

0

Es kann vorkommen, weil Sie in Ihrem übergeordneten Controller einen Wert übergeben, aber nicht im übergeordneten Controller auflösen.

so Eltern-Controller $stateParams.someVal wenn nicht in der Kind-Controller existiert dann wird es undefined werfen. so müssen Sie in der übergeordneten Zustand wie das die resolve-Eigenschaft setzen:

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

etwas wie oben u tun müssen, dass

überprüfen Sie es bitte hier: https://github.com/angular-ui/ui-router/wiki/URL-Routing

Verwandte Themen