Метеор - {{#if template}} является текущим

Интересно, есть ли функция, чтобы проверить, есть ли конкретный шаблон на странице. Например, у меня есть следующее:

  • -header
  • -Уступать
  • --postPage
  • --многие другие

И когда открыта postPage, я хочу отобразить ссылку в шаблоне заголовка. Может быть, что-то похожее на кнопку {{#if currentUser}} {{/if}}

2 ответа

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

displayLinks = new ReactiveVar(false);

Template.postPage.onRendered(function() {
  displayLinks.set(true);
});

Template.postPage.onDestroyed(function() {
  displayLinks.set(false);
});

Template.header.helpers({
  displayLinks: function() {
    return displayLinks.get();
  }
});

По сути, вы устанавливаете реактивную переменную в true, когда отображается postPage, и в false, когда она снимается с DOM. Тогда {{#if displayLinks}} ... {{/if}} в вашем заголовке.

Вам нужно будет

meteor add reactive-var

если вы еще не используете их.

Я хотел добавить к ответу лжи. (Отличный ответ, кстати)

Если у вас есть много шаблонов, которые вы хотите знать, какие из них отображаются без реализации onRendered / onDestroyed для каждого шаблона, вы можете сделать это, используя следующий код:

displayLinks = new ReactiveVar(false);

_.each(["header", "yield", "postPage", "etc"], function(t) {
  Template[t].onRendered(function () {
    displayLinks[t].set(true);
  });

  Template[t].onDestroyed(function () {
    displayLinks[t].set(false);
  });
});
Другие вопросы по тегам