Как отображать данные профиля Meteor.user() в представлении
Я предполагаю, что это должна быть элементарная проблема, однако я слишком долго боролся с этим. Я относительно новичок в Meteor.
Я просмотрел документацию для Meteor.user() (http://docs.meteor.com/#meteor_users) и вижу, как добавляется дополнительная информация в файл user.profile. То есть.
//JS file
Meteor.users.insert({
username: 'admin',
profile: {
first_name: 'Clark',
last_name: 'Kent'
},
});
Как мне отобразить информацию о профиле в шаблоне просмотра? Я могу получить доступ к объекту пользователя через представление и веб-консоль (Meteor.user()
), но я не могу получить доступ к данным объекта.
Мои первоначальные мысли заключались в том, что я мог загружать следующее в мои шаблоны руля, но они не работают:
// HTML view
{{Meteor.user().username}}
{{Meteor.user().profile.first_name}}
{{Meteor.user().profile.last_name}}
Любая помощь очень ценится.
Ответы
Ответ 1
Ваша вставка верна.
Но для отображения информации, подобной первому имени, вы должны предоставить вспомогательную функцию.
Ваш html-шаблон:
<template name="user">
<p>{{firstName}}</p>
</template>
Ваш js-код:
Template.user.helpers({
firstName: function() {
return Meteor.user().profile.first_name;
}
});
Вы можете дополнительно обернуть шаблон пользователя с помощью помощника {{currentUser}}, чтобы убедиться, что есть пользователь.
{{#if currentUser}}
{{> user}}
{{/if}}
Ответ 2
Если вы не хотите определять помощник прокси для разных атрибутов объектов, вложенных в {{currentUser}}
, вы можете сделать следующее в своем шаблоне:
{{#with currentUser}}
{{#with profile}}
{{first_name}}
{{/with}}
{{/with}}
Обновлено, чтобы отражать предложение комментариев.
Ответ 3
В ваших шаблонах вы захотите использовать {{currentUser}}
вместо {{Meteor.user()}}
.
Docs
Ответ 4
попробуйте этот путь
{{#with userDetails}}
First name:-{{this.first_name}}
Last name:- {{this.last_name}}
{{/with}}
//jsSide
userDetails(){
return Meteor.user();
}