2017-09-14 4 views
1

J'utilise le package [email protected] dans mon projet angulaire Meteor.Chaque fois que j'actualise la page en météore angulaire, la méthode `Meteor.user()` renvoie undefined

Meteor.user() La méthode renvoie les détails de l'utilisateur en cours, mais lorsque j'actualise la page, elle renvoie undefined. Alors est-il possible de supprimer cette erreur? Toute aide serait appréciée.

Meteor.autorun(function() { 
    vm.loggedInUser = Meteor.user(); 
}); 

Il fonctionne très bien, mais quand je recharger la page, il retourne undefined

Meteor.autorun(function() { 
    vm.loggedInUser = Meteor.user(); 
    console.log("loggedInUser", vm.loggedInUser); // undefined 
}); 
+0

Votre question est trop large. Vous devriez ajouter plus d'informations et/ou de code, afin que nous puissions comprendre votre problème. – Styx

+0

J'ai amélioré ma question avec plus d'informations. Cela peut vous aider –

+0

Vous vouliez dire 'Tracker.autorun', n'est-ce pas? – Styx

Répondre

3

Lorsque vous actualisez la page Meteor.user() sera undefined pendant quelques cycles jusqu'à ce que ses données ont été retransmises du serveur au client via websocket/ddp. Il deviendra éventuellement défini et aura les bonnes données. Les applications d'une seule page comme celles de Meteor ne nécessitent généralement pas d'actualisation de page, mais doivent gérer le cas de l'actualisation manuelle de l'utilisateur. Une solution typique consiste à montrer un spinner de chargement jusqu'à ce que les abonnements et les données utilisateur soient prêts.

En outre, il est Tracker.autorun() pas Meteor.autorun()

+0

Il récupère les données du serveur lors du passage d'un itinéraire à l'autre. –

+0

Comment changez-vous l'itinéraire? Êtes-vous en cliquant sur un lien dans votre application? Ou en tapant une nouvelle URL dans votre navigateur? Dans le premier cas 'Meteor.user()' devrait rester disponible alors que dans le second cas, c'est la même chose que de faire un rafraîchissement réel de la page. –