angulaire de l'INTERFACE utilisateur du routeur | $stateParams ne fonctionne pas
semble $stateParams
ne fonctionne pas.
en passant de la date comme ceci:
$state.go('state2', { someParam : 'broken magic' });
params être ignoré sur l'état cible
console.log('state2 params:', $stateParams); //return empty object {}
code:
var app = angular.module('app', [
'ui.router'
]);
app.config(function($stateProvider) {
$stateProvider
.state('state1', {
url: '',
templateUrl: 'state-1.html',
controller : function ($scope, $state, $stateParams) {
$scope.go = function () {
$state.go('state2', { someParam : 'broken magic' });
};
console.log('state1 params:', $stateParams);
}
})
.state('state2', {
url: 'state2',
templateUrl: 'state-2.html',
controller : function ($scope, $state, $stateParams) {
$scope.go = function () {
$state.go('state1', { someOtherParam : 'lazy lizard' });
};
console.log('state2 params:', $stateParams);
}
});
});
Live exemple peut être trouvé ici
merci.
- L'exemple ne fonctionne pas pour moi.
- Comment avez-vous défini vos états? (Nous montrent le
$stateProvider
partie). - J'ai mis à jour ma question pour le rendre plus clair.
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas passer arbitraire de paramètres entre les états-unis, vous devez les avoir définies dans le cadre de votre
$stateProvider
définition. E. g.Ci-dessus seront de sortie d'un objet avec la contactId bien défini. Si vous allez à
/contacts/42
, votre$stateParams
sera{contactId: 42}
.Voir le la documentation de l'INTERFACE utilisateur du Routeur Routage d'URL pour plus d'informations.
si vous ne voulez pas définir votre paramètre dans l'url, vous devez inclure une propriété params sur l'état de transition à. Sinon les données seront supprimées de l' $stateParams objet. Le format de la params objet est un tableau de chaînes de caractères dans les anciennes versions de angular-ui-router; dans les versions plus récentes, il est un objet de vide objets:
Voir cet exemple:
Liés à la question:
Paramètres pour les états sans Url dans l'interface utilisateur du routeur pour AngularJS
params
tableau.params: { someParam: {} }
. Source : stackoverflow.com/questions/22814554/... La documentation reste des états qu'il doit être un tableau qui est faux et très déroutant.blue: {}
vous êtes de passage sont traités comme les valeurs par défaut. Donc passerblue: null
à la place si vous êtes en train de faire quelque chose commeif ($stateParams.blue) ...
dans votre contrôleur.Juste de passage de paramètres à un état n'est pas assez. Vous devez définir le paramètre explicitement par son nom dans la
url
propriété de votre état.Si vous ne le faites pas, l'interface utilisateur du routeur ne savez pas cet état s'attend à un paramètre et la
$stateParams
objet ne sera pas peuplé comme vous le souhaitez.Voici un exemple de comment vous pourriez modifier votre état de s'attendre à un paramètre, injecter
$stateParams
, et de faire quelque chose avec ce paramètre:Voici un exemple de passage de l'état params sur jsfiddle.
les solutions ci-dessus fonctionne, mais pour mon cas, j'avais besoin de passer des paramètres de la requête alors j'ai dit comme ça:
Faire un transport et l'utiliser!