I have a helper like
Template.user_profile.helpers({ user:function() { return Meteor.users.find({'profile.front_name':Session.get('slug')}).fetch()[0]; } });
I want to add a helper to the collection which could access the user
helper and compare its _id
with the current user _id
, to tell whether the user is visiting its own profile. I'm using something pretty ugly:
Template.user_profile._tmpl_data.helpers.user()
The final code:
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(); } });
Is there any better way to access another helper?
meteor Blaze Templating Template Helpers Template helpers are an essential part of Blaze and provide both business logic and reactivity to a Template. It is important to remember that Template helpers are actually reactive computations that are rerun whenever their dependencies change.
Helper functions are JavaScript functions that you can call from your template. Ember's template syntax limits what you can express to keep the structure of your application clear at a glance. When you need to compute something using JavaScript, you can use helper functions.
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...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With