Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Meteor设置文档标题_Meteor_Title_Spacebars - Fatal编程技术网

使用Meteor设置文档标题

使用Meteor设置文档标题,meteor,title,spacebars,Meteor,Title,Spacebars,我只是从流星开始。在要本地化的应用程序中,我想设置文档标题 我正在跟踪 在我的裸体版本中,我只有两个文档: head.html <head> <meta charset="utf-8"> <title>{{localizedTitle}}</title> </head> 加载应用程序时,文档标题为“{{localizedTitle}}”。如果我从控制台调用UI.\u globalHelpers.localizedTitle()

我只是从流星开始。在要本地化的应用程序中,我想设置文档标题

我正在跟踪

在我的裸体版本中,我只有两个文档:

head.html

<head>
  <meta charset="utf-8">
  <title>{{localizedTitle}}</title>
</head>
加载应用程序时,文档标题为“{{localizedTitle}}”。如果我从控制台调用
UI.\u globalHelpers.localizedTitle()
,将显示正确的标题

加载页面时,我必须做什么才能使本地化标题显示出来


编辑:这对我来说很有效,但似乎有点像黑客。
title
模板只对自身进行渲染,实际上不会向界面添加任何内容

body.html

<body>
{{> title}}
</body>

<template name="title">
</template>

按照Bernát的回答,不应在头部的
标记中调用全局助手,而应在模板的
标记中调用全局助手,您希望在其中拥有给定的标题。在Meteor中,
不算作模板,因此不能在其中使用空格键表示法:它将被视为简单的文本

此外,请记住,您的助手不会将任何内容返回(即打印)到页面
document.title=“something”
直接将“something”分配给您的标签。所以不需要在里面打电话给你的助手

因此,假设您希望使用
本地化
模板获得页面的“本地化标题”:

<template name="localized">
  <h1>This is the localized page</h1>
  {{localizedTitle}}
</template>

这是本地化页面
{{localizedTitle}}

在这里,你的技巧应该奏效。

我发现在我的iron router routes中的onAfterAction中设置标题很方便:

onAfterAction: function(){
  document.title = 'foo'; // ex: your site's name
  var routeName = Router.current().route.getName();
  if ( routeName ) document.title = document.title + ': ' + routeName;
}

我认为一个更优雅的解决方案是使标题成为被动的,并通过会话变量进行设置(当然,其他被动数据源也可以)。就像这样:

Template.body.onRendered(function() {
  this.autorun(function() {
    document.title = Session.get('documentTitle');
  });
});
现在,每次使用设置“documentTitle”变量时

Session.set('documentTitle', 'Awesome title');
页面标题将更改。无需黑客攻击,您可以在客户端代码的任何位置执行此操作。

请尝试以下操作:

UI.registerHelper('title', function() {
 return 'LocalizedTitle'
});
我们可以在任何你想要的地方使用标题


您可以这样使用
{{title}}

我还没有开始研究iron:router。一次只做一件事。您最终会到达那里,或者到达flow router;)无论如何,@BraveKenny是对的,设置文档标题的唯一方法是使用javascript。唯一的问题是如何触发js运行。模板的onRendered回调、iron路由器等。。。这些都是有效的选择。
Session.set('documentTitle', 'Awesome title');
UI.registerHelper('title', function() {
 return 'LocalizedTitle'
});