我有一个用户个人资料页面,其中有自己的导航项目(即关于我,图片等)我点击这些功能来设置会话变量。
在我的模板中,我想根据会话显示内容(除非有更好的方法)
示例:
{{#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 :(得分: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
//你可以用它做一些疯狂的事情