Подтвердить что ты не робот

Могут ли шаблоны Meteor напрямую просматривать переменные сеанса?

В моем приложении Meteor я нахожу, что пишу много вещей, таких как:

Templates.myTemplate1.isCurrentUser = function() {
  return Session.get("isCurrentUser");
};


Templates.myTemplate2.isCurrentUser = function() {
  return Session.get("isCurrentUser");
};

Мне нужно много разных шаблонов (я использую дескрипторы) для доступа к тому же простому значению, хранящемуся в сеансе.

Есть ли способ избежать повторной записи одной и той же функции? Благодаря

4b9b3361

Ответ 1

Поскольку в настоящее время метеор использует рули в качестве шаблона шаблонов по умолчанию, вы можете просто определить помощник для этого:

if (Meteor.isClient) {

Template.registerHelper('isCurrentUser',function(input){
  return Session.get("isCurrentUser");
});

}

вы можете сделать это в новом файле, например. вызванный helpers.js, чтобы сохранить файл app.js более чистым. Как только этот помощник зарегистрирован, вы можете использовать его в любом шаблоне, вставив {{isCurrentUser}}

Ответ 2

На основе @cioddi ответьте, поскольку вы можете передавать параметры хелперам Handlebars, вы можете сделать его общей функцией, чтобы вы могли легко получить любое значение динамически, например

Template.registerHelper('session',function(input){
    return Session.get(input);
});

Затем вы можете вызвать его в своем шаблоне следующим образом

{{session "isCurrentUser"}}

Обратите внимание, что auth packages поставляется с глобальным помощником с именем CurrentUser, который вы можете использовать для определения того, вошел ли пользователь в систему:

{{#if currentUser}}
    ...
{{/if}}

Ответ 3

Просто голова для всех: с выпуском 0.8.0 Handlebars.registerHelper стал устаревшим. Используя новый движок Blaze, UI.registerHelper станет новым методом достижения этого.

Обновленная версия кода @cioddi

UI.registerHelper('isCurrentUser',function(input){
  return Session.get("isCurrentUser");
});

Ответ 4

На самом деле теперь вы можете просто использовать {{#if currentUser}}

Он глобально включен из пакета accounts/auth.

http://docs.meteor.com/#template_currentuser

Ответ 5

Вы хотите проверить эти помощники руля для метеор: https://github.com/raix/Meteor-handlebar-helpers

Есть несколько помощников сеанса, которые делают то, что вы хотите. Из документов:

Is my session equal to 4?: {{$.Session.equals 'mySession' 4}}

Ответ 6

Вы можете добавить isCurrentUserTemplate и включить это в свои другие шаблоны с помощью

{{> isCurrentUserTemplate}}