Je dispose d'un fichier de configuration qui contient un état qui ressemble à ce qui suit:
$stateProvider.state('home', {
url: '?data',
abstract: true,
resolve: {
data: ['MyModel', '$stateParams', function (MyModel, $stateParams) {
return MyModel.getData($stateParams);
}]
}
});
puis un fichier de module qui ressemble à ceci:
App.module.run(['$rootScope', '$state', function ($rootScope, $state) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
où toParams
renverrait object{data:undefined}
. Je sais que la résolution fonctionne et devrait avoir des données. Comment puis-je passer correctement la résolution de mon état dans le $stateChangeStart
puis y accéder?
J'ai essayé d'injecter ma résolution de données manuellement dans mon fichier de module, mais elle renvoie undefined. Je l'ai essayé de placer l'attribut params
pour voir si cela était le chemin à parcourir:
resolve: {
data: ['MyModel', '$stateParams', function (MyModel, $stateParams) {
return MyModel.getData($stateParams);
}]
},
params: {
'foo':'bar', // this would be available in toParams
'data': //can i put my data here?
}
est-ce que cela ne vainc pas l'objet d'avoir une résolution? ou ai-je manqué quelque chose – gardni
Le but habituel d'une résolution est de s'assurer que certaines promesses ont été faites avant de charger la route et le contrôleur. Je ne suis pas exactement sûr pourquoi vous voulez que vos données de résolution dans $ stateChangeStart, mais ma solution fonctionne. –
dans mon stateChangeStart Je ne souhaite autoriser un changement de route que si ma promesse est résolue, car les routes dépendent des données. Donc, si je l'injecte manuellement comme vous le suggérez, je ne suis pas sûr que cela confirme que ma résolution a été résolue si cela a du sens. Votre méthode fonctionne cependant en termes de me fournir les données que je veux. – gardni