J'ai passé beaucoup de temps à lutter avec $state & $stateParams d'Ionic / Angular;
Pour utiliser $state.go() et $stateParams, vous devez avoir certaines choses configurées et d'autres paramètres ne doivent pas être présents.
Dans mon app.config(), j'ai inclus $stateProvider et défini à l'intérieur plusieurs états:
$stateProvider
.state('home', {
templateUrl: 'home',
controller: 'homeController'
})
.state('view', {
templateUrl: 'overview',
params: ['index', 'anotherKey'],
controller: 'overviewController'
})
La clé params
est particulièrement importante. De plus, remarquez qu'il n'y a PAS de clés url
présentes... l'utilisation de stateParams et des URL NE se mélangent PAS. Ils sont mutuellement exclusifs l'un de l'autre.
Dans l'appel $state.go(), définissez-le comme ceci:
$state.go('view', { 'index': 123, 'anotherKey': 'Ceci est un test' })
Les variables $stateParams index
et anotherKey
seront SEULEMENT remplies si elles sont d'abord répertoriées dans la clé de définition params
de $stateController.
Dans le contrôleur, incluez $stateParams comme illustré:
app.controller('overviewController', function($scope, $stateParams) {
var index = $stateParams.index;
var anotherKey = $stateParams.anotherKey;
});
Les variables passées devraient être disponibles!