web-dev-qa-db-fra.com

Comment afficher les données de profil Meteor.user () dans la vue

J'imagine que cela doit être un problème élémentaire, mais je lutte depuis trop longtemps. Je suis relativement nouveau chez Meteor.

J'ai consulté la documentation de Meteor.user () ( http://docs.meteor.com/#meteor_users ) et je peux voir comment des informations supplémentaires sont ajoutées à user.profile. C'est à dire.,

//JS file
Meteor.users.insert({
    username: 'admin',
    profile: {
                first_name: 'Clark',
                last_name: 'Kent'
    },

});

Comment puis-je afficher les informations de profil dans le modèle de vue? Je peux accéder à l'objet utilisateur via la vue et la console Web (Meteor.user()), mais je ne peux pas accéder aux détails de l'objet.

Mes idées initiales étaient que je pouvais charger les éléments suivants dans mes modèles de guidon mais ils ne fonctionnaient pas:

// HTML view
{{Meteor.user().username}}
{{Meteor.user().profile.first_name}}
{{Meteor.user().profile.last_name}}

Toute aide est grandement appréciée.

15
akaHeimdall

Votre insertion est correcte.

Mais pour afficher des informations telles que le prénom, vous devez fournir une fonction d'assistance.

Votre template HTML:

<template name="user">
  <p>{{firstName}}</p>
</template>

Votre code js:

Template.user.helpers({
  firstName: function() {
    return Meteor.user().profile.first_name;
  }
});

Vous pouvez en outre encapsuler le modèle utilisateur avec l'aide {{currentUser}} pour vous assurer qu'il existe bien un utilisateur.

{{#if currentUser}} 
  {{> user}}
{{/if}}
28
chaosbohne

Si vous ne souhaitez pas définir un assistant proxy pour différents attributs d'objets imbriqués dans {{currentUser}}, vous pouvez effectuer les opérations suivantes uniquement dans votre modèle:

{{#with currentUser}}
    {{#with profile}}
        {{first_name}}
    {{/with}}
{{/with}}

Mis à jour pour refléter la suggestion de commentaire.

15
kontur

Dans vos modèles, vous voudrez utiliser {{currentUser}} au lieu de {{Meteor.user()}}.

Docs

6
Jordan H.

essayer de cette façon

{{#with userDetails}}
   First name:-{{this.first_name}}
   Last name:- {{this.last_name}}
{{/with}}

 //jsSide
 userDetails(){
   return Meteor.user();
 }
0
kumbhanibhavesh