在我的流星程序,我发现自己写了很多东西,如:
Templates.myTemplate1.isCurrentUser = function() {
return Session.get("isCurrentUser");
};
Templates.myTemplate2.isCurrentUser = function() {
return Session.get("isCurrentUser");
};
我需要很多不同的模板(我使用把手)来访问存储在内部会议上同样简单的价值。
有没有办法避免一遍又一遍地编写相同的功能? 谢谢
由于流星是目前使用把手作为默认的模板引擎,你可以只定义为像一个帮手:
if (Meteor.isClient) {
Template.registerHelper('isCurrentUser',function(input){
return Session.get("isCurrentUser");
});
}
你可以在一个新的文件,例如名为helpers.js这样做是为了保持app.js文件清理。 一旦这个帮助注册通过插入您可以在任何模板使用{{isCurrentUser}}
建立在@cioddi的回答,因为你可以传递参数给车把助手,你可以让它变成一个通用的功能,让您可以轻松地动态检索任何值,例如
Template.registerHelper('session',function(input){
return Session.get(input);
});
然后,您可以调用它在模板中像这样的
{{session "isCurrentUser"}}
需要注意的是权威性的包拿出一个全球性的辅助名为CurrentUser,您可以使用,如果用户登录到检测:
{{#if currentUser}}
...
{{/if}}
只是抬起头给大家:随着0.8.0的发布, Handlebars.registerHelper
已成为过时。 使用新的Blaze引擎, UI.registerHelper
将是解决这个问题的新方法。
的@cioddi的代码更新版本
UI.registerHelper('isCurrentUser',function(input){
return Session.get("isCurrentUser");
});
其实现在你可以使用{{#if currentUser}}
这是从账户/ AUTH包包括一个全球性的..
http://docs.meteor.com/#template_currentuser
你会想看看这些车把助手的流星: https://github.com/raix/Meteor-handlebar-helpers
有一些会议帮手,其中一个你想要做什么。 从文档:
Is my session equal to 4?: {{$.Session.equals 'mySession' 4}}
你可以添加一个isCurrentUserTemplate
并在与其他模板包括这
{{> isCurrentUserTemplate}}