Geo*_*hov 27 handlebars.js meteor
在我的Meteor应用程序中,我发现自己写了很多东西,比如:
Templates.myTemplate1.isCurrentUser = function() {
return Session.get("isCurrentUser");
};
Templates.myTemplate2.isCurrentUser = function() {
return Session.get("isCurrentUser");
};
Run Code Online (Sandbox Code Playgroud)
我需要许多不同的模板(我使用把手)来访问存储在Session中的相同简单值.
有没有办法避免一遍又一遍地写同一个函数?谢谢
jtb*_*lin 46
基于@cioddi的答案,因为您可以将参数传递给Handlebars助手,您可以将其作为通用函数,以便您可以轻松地动态检索任何值,例如
Template.registerHelper('session',function(input){
return Session.get(input);
});
Run Code Online (Sandbox Code Playgroud)
然后,您可以在模板中调用它
{{session "isCurrentUser"}}
Run Code Online (Sandbox Code Playgroud)
请注意,auth软件包附带一个名为CurrentUser的全局帮助程序,您可以使用它来检测用户是否已登录:
{{#if currentUser}}
...
{{/if}}
Run Code Online (Sandbox Code Playgroud)
cio*_*ddi 28
由于meteor目前使用把手作为默认的模板引擎,你可以为它定义一个帮助器:
if (Meteor.isClient) {
Template.registerHelper('isCurrentUser',function(input){
return Session.get("isCurrentUser");
});
}
Run Code Online (Sandbox Code Playgroud)
你可以在一个新文件中执行此操作,例如调用helpers.js以保持app.js文件更清晰.注册此帮助程序后,您可以通过插入在任何模板中使用它{{isCurrentUser}}
mjk*_*fer 12
只是向大家介绍:随着0.8.0的发布,Handlebars.registerHelper已经被弃用了.使用新的Blaze引擎,UI.registerHelper将是实现这一目标的新方法.
@cioddi代码的更新版本
UI.registerHelper('isCurrentUser',function(input){
return Session.get("isCurrentUser");
});
Run Code Online (Sandbox Code Playgroud)
实际上现在你可以使用 {{#if currentUser}}
它是来自accounts/auth包的全局...
http://docs.meteor.com/#template_currentuser
你想看看这些用于流星的车把助手:https://github.com/raix/Meteor-handlebar-helpers
有许多会话助手,一个可以满足您的需求.来自文档:
Is my session equal to 4?: {{$.Session.equals 'mySession' 4}}
| 归档时间: |
|
| 查看次数: |
13795 次 |
| 最近记录: |