我正在尝试为我的示例Meteor应用程序动态获取并设置pageTitle,理想情况下我想使用jQuery,但任何其他解决方案也都会很好。
我试图通过在页面上存在某个div类时设置会话来粗略地进行,但由于某种原因它不起作用。
基本上,我有这个:
Template.layout.helpers({
pageTitle: function() { return Session.get('pageTitle'); }
});
我想做一些像
这样的事情if ($('section').hasClass('single')) {
Session.set('pageTitle', 'Post Page');
}
任何想法让这个工作?谢谢!
答案 0 :(得分:4)
您需要在控制器或模板呈现部分中调用它,如下所示:
Template.layout.helpers({
pageTitle: function() {
return Session.get('pageTitle');
}
});
// set when a page template renders
Template.posts.rendered = function() {
setPageTitle("Blog Posts");
};
// or with Iron Router on *every* route using some sort of variable
Router.onBeforeAction(function() {
var someDynamicValue = "FOO";
setPageTitle(someDynamicValue);
});
// or in an IronRouter Controller
PostsController = RouteController.extend({
onBeforeAction: function() {
setPageTitle("Blog Posts");
}
});
// helper function to set page title. puts a prefix in front of page, you
// could opt set a boolean to override that
function setPageTitle(titleName) {
var prefix = "My Site - ";
if ($('section').hasClass('single')) {
Session.set('pageTitle', prefix + titleName);
}
}
答案 1 :(得分:0)
正如@Kuba Wyrobek指出的那样,我需要使用Template.layout.rendered函数。
这是一个有效的代码片段
Template.postsList.rendered = function(){
Session.set('pageTitle', 'Listing Page')
};