Maison > Questions et réponses > le corps du texte
S'il vous plaît, parlez-moi de
dans angulaire-ui-route$state.go('xxx',{id:'1'})
Seule cette simple chaîne peut-elle être transmise ?
Si je veux transmettre un objet, comment dois-je utiliser des variables globales ?
phpcn_u15822017-05-15 16:54:32
Non seulement vous pouvez transmettre des chaînes simples, mais bien sûr, vous pouvez également transmettre des objets
Le nom du paramètre indiqué dans la configuration du routeur. Prenons l'exemple de ui-router
.$stateProvider.state('state1', {
url: '/path/:id', // 这个地方用简单字符串
templateUrl: '/path/to.html',
params: {
obj: null // 这个地方就可以随便你用了. 因为这个参数没在state的url中体现出来
}
}).
Utilisez $state pour changer de page
$state.go('state1', {
id: '22',
obj: {
key: 'value'
}
});
Utilisez $stateParams dans le contrôleur pour obtenir les paramètres
console.log($stateParams.obj)
Bien entendu, si vous transmettez des paramètres qui ne sont pas reflétés dans l'URL, les paramètres ne seront pas disponibles lors d'opérations telles que le retour en arrière
.Vous pouvez utiliser la méthode de @whosesmile pour fonctionner. Utiliser le service. LZ peut jeter un œil au $cacheFactory
intégré d'angular. Utilisez-le pour générer un cache et effectuer put get remove removeAll
et d'autres opérations
大家讲道理2017-05-15 16:54:32
Généralement deux options
1. Variables globales, c'est-à-dire utilisant $rootScope
2. Utilisez le service. Étant donné que le service est une instance unique et ne sera pas détruit, vous pouvez définir un service de données de cache général pour accéder aux données. service.set(clé, valeur) dans le contrôleur qui doit transférer les données. service.get('key')
伊谢尔伦2017-05-15 16:54:32
J'ai oublié quelle version ui-router a ajouté la méthode suivante pour conserver les paramètres dans l'url
1.$state
$state.go("state",{datas:{ID:data1,NAME:data2}})
2. Configurer le routeur
.state('state',{
url:'path/{datas:json}',
params:{'datas':null}.
...
})
3. Utilisez $stateParam.datas pour obtenir