meteor,如何从另一个助手获得助手?

我有一个帮手像

Template.user_profile.helpers({ user:function() { return Meteor.users.find({'profile.front_name':Session.get('slug')}).fetch()[0]; } }); 

我想添加一个助手到可以访问user助手的集合,并将其_id与当前用户_id进行比较,以判断用户是否正在访问自己的configuration文件。 我正在使用一些非常丑陋的东西:

 Template.user_profile._tmpl_data.helpers.user() 

最终的代码:

 Template.user_profile.helpers({ user:function() { return Meteor.users.find({'profile.front_name':Session.get('userId')}).fetch()[0]; }, isCurrentUser: function() { return Template.user_profile._tmpl_data.helpers.user()._id === Meteor.userId(); } }); 

有没有更好的方法来访问另一个助手?

我只是不小心在控制台中发现了这个:

 Template.registerHelper function (name, func) { Blaze._globalHelpers[name] = func; } 

所以, Blaze._globalHelpers就是我们正在寻找的!

你可以调用一个模板助手(不是全局助手 – 这是在outluch的答案)与:

 Template.tplName.__helpers.get('helper').call() 

MDGbuild议使用常规函数,然后将其传递给助手,事件等。 看到这里 。

16.06.16更新
其实我强烈build议只使用manuel:viewmodel – 它可以减轻很多Blaze的头痛。

当我正在寻找一种方法来从另一个助手调用助手的时候,我发现Meteor 1.0定义了“Template.registeredHelpers”,可供所有其他助手使用。 https://docs.meteor.com/#/full/template_registerhelper

 Template.registerHelper("checkedIf",function(value){ return value?"checked":""; }); 

你可能甚至不需要打电话给那样的帮手。 目前已经build立了一个用户帮手。

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

 {{currentUser}} 

也许这会为你工作:

  //js Template.foo.helpers({ bar: function() { return this.userId == Meteor.userId(); }, domain: function() { var a = document.createElement('a'); a.href = this.url; return a.hostname; } }); ownsDocument = function(userId, doc) { return doc && doc.userId === userId;} Posts = new Meteor.Collection('posts'); Posts.allow({ update: ownsDocument, remove: ownsDocument }); //html {{#if bar}}<a href="{{pathFor 'postEdit'}}">Edit</a>{{/if}}