123 votes

Comment envoyer et récupérer des paramètres en utilisant $state.go toParams et $stateParams ?

Je suis en train d'utiliser AngularJS v1.2.0-rc.2 avec ui-router v0.2.0. Je veux passer l'état référent à un autre état, donc j'utilise toParams de $state.go comme ceci :

$state.go('toState', {referer: $state.current.name});

Selon la documentation, cela devrait remplir les $stateParams du contrôleur toState, mais elle est undefined. Qu'est-ce que je rate?

J'ai créé un plunk pour le démontrer :

http://plnkr.co/edit/ywEcG1

2voto

Seth Caldwell Points 26

La solution à laquelle nous sommes parvenus en ayant un état prenant 2 paramètres était de changer :

.state('somestate', {
  url: '/somestate',
  views: {...}
}

à

.state('somestate', {
  url: '/somestate?id=:&sub=:',
  views: {...}
}

1voto

MahmutKarali Points 57

Votre définition dans router.js est la suivante

$stateProvider.state('users', {
    url: '/users',
    controller: 'UsersCtrl',
    params: {
        obj: null
    }
})

Votre contrôleur doit ajouter $stateParams.

function UserCtrl($stateParams) {
    console.log($stateParams);
}

Vous pouvez envoyer un objet en paramètre comme suit.

$state.go('users', {obj:yourObj});

1voto

Praveesh P Points 406

J'essayais de naviguer de la page 1 à la page 2, et je devais également passer des données.

Dans mon fichier router.js, j'ai ajouté les paramètres name et age :

.state('page2', {
          url: '/vehicle/:source',
          params: {name: null, age: null},
.................

Dans Page1, lors du clic sur le bouton suivant :

$state.go("page2", {name: 'Ron', age: '20'});

Dans Page2, je pouvais accéder à ces paramètres :

$stateParams.name
$stateParams.age

0voto

lgx Points 500

Si c'est un paramètre de requête que vous souhaitez passer de cette manière : /toState?referer=current_user

alors vous devez décrire votre état de cette manière :

$stateProvider.state('toState', {
  url:'toState?referer',
  views:{'...'}
});

source: https://github.com/angular-ui/ui-router/wiki/URL-Routing#query-parameters

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X