Метеор - {{#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);
});
});