会话集和进入流星

时间:2014-08-16 13:47:15

标签: javascript jquery meteor

我正在尝试为我的示例Meteor应用程序动态获取并设置pageTitle,理想情况下我想使用jQuery,但任何其他解决方案也都会很好。

我试图通过在页面上存在某个div类时设置会话来粗略地进行,但由于某种原因它不起作用。

基本上,我有这个:

Template.layout.helpers({
  pageTitle: function() { return Session.get('pageTitle'); }
});

我想做一些像

这样的事情
if ($('section').hasClass('single')) {
    Session.set('pageTitle', 'Post Page');
}

任何想法让这个工作?谢谢!

2 个答案:

答案 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')
};