2014-03-04 26 views
1

我有一个用户配置文件页面,有自己的导航项(即关于我,图片等)我点击这些功能来设置会话变量。流星 - 在车把条件下使用会话?

在我的模板,我想基于会话显示内容(除非有一个更好的办法)

例子:

{{#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}} 

但是,我仍然想知道我在做什么错误的条件。我引用了联盟示例中的文档,但它没有使用会话。

回答

0

看起来这应该是一个全球性的辅助工作:

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

然后你就可以在你最初的例子中使用它在你的模板等。试一试,让我知道它是否有效。

+0

工作就像一个魅力大卫。你真棒。谢谢......再次:) – user1447679

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

//你可以做一些疯狂的东西与它

+0

除非在铁路路由器中有更多的高级选项,我不知道这一点并不完全相关。我已经路由到该页面并尝试基于会话中的嵌入式模板/查询来过滤内容。我欣赏它,但。 – user1447679

+0

含义,我不想为此分开路线。 :) – user1447679