【问题标题】:Session Set and Get in Meteor会话设置并进入 Meteor
【发布时间】:2014-08-16 22:34:14
【问题描述】:

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

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

基本上,我有这个:

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

我想做一些类似的事情

if ($('section').hasClass('single')) {
    Session.set('pageTitle', 'Post Page');
}

有什么想法可以完成这项工作吗?谢谢!

【问题讨论】:

  • 你在 Template.layout.rendered 函数中设置pageTitle 吗?
  • 嗯,不,我想在实现这样的东西之前我必须多学习一点,然后:)
  • 我想我做到了,马上发布解决方案 :) 非常感谢

标签: javascript jquery meteor


【解决方案1】:

您需要在控制器或模板渲染部分中调用它,如下所示:

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);
  }
}

【讨论】:

  • 感谢您的回答,比我的更完整
【解决方案2】:

正如@Kuba Wyrobek 指出的那样,我需要使用 Template.layout.rendered 函数。

这是一个有效的 sn-p

Template.postsList.rendered = function(){
    Session.set('pageTitle', 'Listing Page')
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2020-01-29
    相关资源
    最近更新 更多