可以直接流星模板访问会话变量?(Can Meteor Templates access Sessio

2019-07-02 14:02发布

在我的流星程序,我发现自己写了很多东西,如:

Templates.myTemplate1.isCurrentUser = function() {
  return Session.get("isCurrentUser");
};


Templates.myTemplate2.isCurrentUser = function() {
  return Session.get("isCurrentUser");
};

我需要很多不同的模板(我使用把手)来访问存储在内部会议上同样简单的价值。

有没有办法避免一遍又一遍地编写相同的功能? 谢谢

Answer 1:

由于流星是目前使用把手作为默认的模板引擎,你可以只定义为像一个帮手:

if (Meteor.isClient) {

Template.registerHelper('isCurrentUser',function(input){
  return Session.get("isCurrentUser");
});

}

你可以在一个新的文件,例如名为helpers.js这样做是为了保持app.js文件清理。 一旦这个帮助注册通过插入您可以在任何模板使用{{isCurrentUser}}



Answer 2:

建立在@cioddi的回答,因为你可以传递参数给车把助手,你可以让它变成一个通用的功能,让您可以轻松地动态检索任何值,例如

Template.registerHelper('session',function(input){
    return Session.get(input);
});

然后,您可以调用它在模板中像这样的

{{session "isCurrentUser"}}

需要注意的是权威性的包拿出一个全球性的辅助名为CurrentUser,您可以使用,如果用户登录到检测:

{{#if currentUser}}
    ...
{{/if}}


Answer 3:

只是抬起头给大家:随着0.8.0的发布, Handlebars.registerHelper已成为过时。 使用新的Blaze引擎, UI.registerHelper将是解决这个问题的新方法。

的@cioddi的代码更新版本

UI.registerHelper('isCurrentUser',function(input){
  return Session.get("isCurrentUser");
});


Answer 4:

其实现在你可以使用{{#if currentUser}}

这是从账户/ AUTH包包括一个全球性的..

http://docs.meteor.com/#template_currentuser



Answer 5:

你会想看看这些车把助手的流星: https://github.com/raix/Meteor-handlebar-helpers

有一些会议帮手,其中一个你想要做什么。 从文档:

Is my session equal to 4?: {{$.Session.equals 'mySession' 4}}



Answer 6:

你可以添加一个isCurrentUserTemplate并在与其他模板包括这

{{> isCurrentUserTemplate}}


文章来源: Can Meteor Templates access Session variables directly?