J'ai besoin de passer et de recevoir deux paramètres à l'état vers lequel je veux passer en utilisant ui-sref
ui-router.
Quelque chose comme utiliser le lien ci-dessous pour la transition de l'état vers les paramètres home
with foo
et bar
:
<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>
Réception foo
et bar
valeurs dans un contrôleur:
app.controller('SomeController', function($scope, $stateParam) {
//..
var foo = $stateParam.foo; //getting fooVal
var bar = $stateParam.bar; //getting barVal
//..
});
Je reçois undefined
pour $stateParam
le contrôleur.
Quelqu'un pourrait-il m'aider à comprendre comment le faire?
Éditer:
.state('home', {
url: '/',
views: {
'': {
templateUrl: 'home.html',
controller: 'MainRootCtrl'
},
'A@home': {
templateUrl: 'a.html',
controller: 'MainCtrl'
},
'B@home': {
templateUrl: 'b.html',
controller: 'SomeController'
}
}
});
url:'.../home/:foo/:bar
'/:foo/:bar': {
votre itinéraire vierge ou vous pouvez également configurer une chaîne de requête.Réponses:
J'ai créé un exemple pour montrer comment. La
state
définition mise à jour serait:Et ce serait le contrôleur:
Ce que nous pouvons voir, c'est que la maison d'État a maintenant une URL définie comme:
ce qui signifie que les paramètres dans l'url sont attendus comme
Ces deux liens transmettront correctement les arguments au contrôleur:
En outre, le contrôleur consomme
$stateParams
au lieu de$stateParam
.Lien vers le doc:
Vous pouvez le vérifier ici
params : {}
Il existe également un nouveau cadre plus granulaire
params : {}
. Comme nous l'avons déjà vu, nous pouvons déclarer des paramètres comme faisant partie deurl
. Mais avec laparams : {}
configuration - nous pouvons étendre cette définition ou même introduire des paramètres qui ne font pas partie de l'url:Les paramètres disponibles pour les paramètres sont décrits dans la documentation de $ stateProvider
Ci-dessous est juste un extrait
Nous pouvons appeler ces paramètres de cette façon:
Vérifiez-le en action ici
la source
url: "/:id?foo&bar"
Vous n'avez pas nécessairement besoin d'avoir les paramètres à l'intérieur de l'URL.
Par exemple, avec:
Vous pourrez envoyer des paramètres à l'état, en utilisant soit:
Bien sûr, si vous rechargez la page une fois sur l'
home
état, vous perdrez les paramètres d'état, car ils ne sont stockés nulle part.Une description complète de ce comportement est documentée ici , sous la
params
ligne de lastate(name, stateConfig)
section.la source
Vous avez simplement mal orthographié
$stateParam
, cela devrait être$stateParams
(avec un s). Voilà pourquoi vous obtenez indéfini;)la source