【问题标题】:How Do I Set Meteor Template Title On Render?如何在渲染时设置 Meteor 模板标题?
【发布时间】:2015-04-21 14:31:08
【问题描述】:

我有一个动态的代码行:

 <label>{{title}}</label>
//template name="header"

我正在使用 Iron:router,这个应用现在超级简单:

Router.configure({
  layoutTemplate: 'ApplicationLayout'
})

Router.route('/', {
  template: "home"
})

Router.route('/scientific', {
  template: "scientific"
})

我想要一个不依赖 Session 作为动态呈现 {{title}} 的方法的解决方案。

理想情况下,我想在我的路由器代码中的某个地方定义这个标题,然后让我的标题自动拾取它。我不想在我的 Template.rendered 回调中做很多 Session.set/get over(我似乎在使用 Semantic-UI 复选框时遇到了问题)。

你们有什么优雅、超级简单的解决方案吗?

PS:模板'header'在ApplicationLayout模板中。 ApplicationLayout 在标题下方有一个{{&gt; yield}}

【问题讨论】:

  • 它值得一个包,您是否尝试将所有这些丑陋的会话集封装在一个易于使用的流星包中?
  • 这听起来是个好主意,但在我开始重构为模块化代码之前,我还有很多关于 Meteor 本身的知识需要了解。也许我应该更深入地用这段代码写一篇博客,并从你们 Meteor 向导那里获得关于一些高质量重构的反馈。
  • 我假设您也想更改 html > header > 标题。对于您的简单案例,下面的答案就足够了。

标签: javascript meteor iron-router spacebars


【解决方案1】:

一个可行的选择是将您的标题存储在您的路线选项中,如下所示:

Router.route("/",{
  template:"home",
  title:"Welcome Home !"
});

Router.route("/scientific",{
  template:"scientific",
  title:"Scientific stuff"
});

然后您可以根据(反应式)当前路由控制器在标题模板上定义标题助手。

Template.header.helpers({
  title:function(){
    return Router.current().route.options.title;
  }
});

【讨论】:

  • 你知道吗,这是我想要的优雅解决方案,但语义 ui 仍然给我带来问题。我认为这只是一个 Session 的事情。尽管如此,谢谢!
  • 您可以创建一个全局帮助器来为模板 [1] 提供反应式 title(或 pageTitle)帮助器,并创建一个 Deps.autorun 来设置浏览器页面标题 [2]。请参阅:[1] stackoverflow.com/questions/20681761/… 和 [2] stackoverflow.com/questions/14036248/…。你也可以把它装在一个包里。
  • 为什么不使用这个包:iron-router-title
猜你喜欢
  • 2012-05-02
  • 2014-12-12
  • 2015-06-16
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 2013-04-07
  • 1970-01-01
相关资源
最近更新 更多