J'essaye d'employer la résolution ui-routeur angulaire de météores js pour charger l'information d'un utilisateur choisi de la liste d'utilisateur.Meteor collection dans ui-routeur résoudre
$stateProvider
.state('userprofile', {
url: '/user/:userId',
cache: false,
template: '<user-profile userinfo="$resolve.userinfo"></user-profile>',
controller: UserProfile,
controllerAs: name,
resolve: {
userinfo: function($stateParams) {
viewedUser = Meteor.users.findOne({
_id: $stateParams.userId
});
return viewedUser;
},
}
});
Le problème est que, pour la première fois après de la liste des utilisateurs, l'affichage du profil utilisateur correctement. Cependant, le rechargement de page rend l'info-utilisateur indéfinie. J'ai invité que de la deuxième fois, le contrôleur chargé déjà de sorte qu'il affiche avant résolu fait ?!
Après un certain temps de recherche, j'ai essayé $ q et délai d'attente $
resolve: {
userinfo: function($stateParams, $q, $timeout) {
deferred = $q.defer();
$timeout(function() {
deferred.resolve(Meteor.users.findOne({
_id: $stateParams.userId
}));
}, 1000);
return deferred.promise;
},
}
Il fonctionne comme je m'y attendais, le profil de l'utilisateur affiché chaque fois que je rafraîchir la page. Mais si je baisse le délai à 500, il revient à indéfini lorsqu'il est rafraîchi. Je ne sais pas pourquoi dans ce cas, un retard plus long fonctionne?
Merci!