Meteor, how to access to a helper from another helper?

我是研究僧i 提交于 2019-11-30 01:44:48
outluch

I've just accidentally discovered this in the console:

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

So, Blaze._globalHelpers is what we are looking for!

You can call a template helper (not global helper - which is in outluch's answer) with:

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

MDG suggests using a regular function and then passing it to helpers, events and so on. See here.

Update 16.06.16
Actually I strongly advise to simply use manuel:viewmodel - it alleviates so many Blaze headaches...

As I was searching for a way to call a helper from another helper, I found that Meteor 1.0 defines "Template.registeredHelpers" that are available for all other helpers to use. https://docs.meteor.com/#/full/template_registerhelper

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

You might not even need to call a helper like that. There is a currentUser helper already built in.

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

{{currentUser}}

maybe this would work for you:

  //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}}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!