流星 - 在车把条件下使用会话?

时间:2014-03-04 01:42:16

标签: meteor handlebars.js

我有一个用户个人资料页面,其中有自己的导航项目(即关于我,图片等)我点击这些功能来设置会话变量。

在我的模板中,我想根据会话显示内容(除非有更好的方法)

示例:

 {{#if activeTabIs "About Me"}}
     {{> ProfileAbout}}
 {{/if}}
 {{#if activeTabIs "Pictures"}}
     {{> ProfileGallery }}
 {{/if}}

Template: userProfile

...

// I've tried this
Template.userProfile.activeTabIs = function() {
    return Session.get('ActiveProfileTab');
};

// And this
Handlebars.registerHelper('activeTabIs', function(){
    return Session.get("ActiveProfileTab");
});

Manager

以上总是返回true并显示所有内容。如果我只使用一个帮手:

{{activeTabIs}}

它可以工作,就像我通过控制台切换会话一样,它会动态变化。但如果条件不起作用,车把。

如果有更好的方法来解决这个问题,我会喜欢一些想法。例如,如果我可以:

{{RenderActiveTab}}

然而,我仍然想了解我在这些条件下做错了什么。我引用了联盟示例中的文档,但它没有使用会话。

2 个答案:

答案 0 :(得分:0)

看起来这应该是一个全球帮手:

Handlebars.registerHelper('activeTabIs', function(tab){
  return Session.equals('ActiveProfileTab',  tab);
});

然后您可以在模板中使用它,就像在最初的示例中一样。尝试一下,让我知道它是否有效。

答案 1 :(得分:0)

我认为你可以用路由器做到这一点。 (例如铁路由器)

这是用户点击链接时更改模板的代码:

Router.map(function() {
    this.route('home', {path: '/'});
    this.route('ProfileAbout', {path: '/about'});
    this.route('ProfileGallery', {path: '/gallery'});

    });

 //html example

 <a href="/about">This shows the ProfileAbout template</a>

有关如何使用铁路由器的更多信息:https://github.com/EventedMind/iron-router

//你可以用它做一些疯狂的事情