gpt4 book ai didi

javascript - 使用 iron-router 时设置 HTML 标题

转载 作者:数据小太阳 更新时间:2023-10-29 04:53:44 27 4
gpt4 key购买 nike

如何在使用 iron-router 时最好地设置 HTML 标题?这是我想做的:

<template name="layout">
<head><title>{{KAZOOM}}</title></head>
<body>
{{> menu}}
{{yield}}
</body>
</template>

<template name="example">
{{KAZOOM 'example page'}}
That's just an example page
</template>

<template name="foo">
{{KAZOOM 'foo page'}}
Another example page with different HTML title
</template>

您看到 KAZOOM 如何及时返回设置 HTML 标题了吗?我希望这样做的原因是我认为 HTML 标题是内容的一部分。如果我可以通过编辑生成页面的模板来调整页面的 HTML 标题,那就太好了。不幸的是,我没有看到一种干净的方法来实现这一目标。我能想到的最接近的名称是 yields,然后标题将由路由设置,而不是由模板设置。

另一种可能性是放弃布局模板并始终包含标题:

<template name="head">
<head><title>{{this}}</title></head>
{{> menu}}
</template>

<template name="example">
{{> head 'example page'}}
That's just an example page
</template>

<template name="foo">
{{> head 'foo page'}}
Another example page with different HTML title
</template>

这不是很好。您对此有适当的解决方案吗?

最佳答案

在 Iron 路由器中设置 document.title onAfterRun:

var pageTitle = 'My super web';
Router.map(function() {
this.route('user', {
onAfterRun: function() {
document.title = 'User ' + this.params.name + ' - ' + pageTitle;
}
});
});

编辑:

如果你想在模板中设置标题,创建自定义 Handlebars 助手(客户端代码):

Handlebars.registerHelper("KAZOOM", function(title) {
if(title) {
document.title = title;
} else {
document.title = "Your default title";
}
});

并在你使用它的时候在你的模板中使用它

{{KAZOOM 'example page'}}

{{KAZOOM}}

默认标题。

2015 年 7 月 26 日编辑:对于新的 Iron Router,它看起来像:

Router.route('/user', {
onAfterAction: function() {
document.title = 'page title';
}
});

关于javascript - 使用 iron-router 时设置 HTML 标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19882687/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com