流星 - {{#if template}}是最新的

时间:2015-07-10 16:26:28

标签: meteor template-engine iron-router

我想知道是否有任何功能可以检查特定模板是否在页面上。 例如,我有以下内容:

  • -header
  • -yield
  • - postPage
  • - 许多其他人

当打开postPage时,我想在标题模板中显示链接。 也许smth类似于{{#if currentUser}}按钮{{/ if}}

2 个答案:

答案 0 :(得分:1)

我不确定是否有办法查看当前正在呈现的所有模板,可能至少有一个私有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();
  }
});

基本上,当显示postPage时,您将反应变量设置为true,而当它从DOM中删除时,则设置为false。 然后在标题中{{#if displayLinks}} ... {{/ if}}。

你需要

meteor add reactive-var

如果您还没有使用它们。

答案 1 :(得分:1)

我想加入一些烂摊子'响应。 (很好的回应BTW)

如果你想要知道哪些模板想要知道哪些模板而不为每个模板实现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);
  });
});