Reputation: 2409
Currently I have an Ember object that looks like this:
name: 'Bob'
xs: {
'actual':50
'target':55
}
I have around 5-6 fields similar to xs
. I need a helper method that can take that xs object and then return whether or not the target has been hit.
I thought of doing this:
Handlebars.registerHelper('hasHitTarget', function(attribute) {
if (attribute.actual >= attribute.target)
{
return block(this);
}
});
{{#each user in App.userController}}
{{#hasHitTarget user.xs}}
Target Hit
{{/hasHitTarget}}
{{/each}}
Everything I've read online says this should work. But it doesn't. When I console.log(attribute)
it returns user.xs
as a string. What's going on?
Upvotes: 5
Views: 2017
Reputation: 1108
Passing an object to a Handlebars Helper from within an #each doesn't work as intended, due to a bug in Ember (currently v1.0), there is a workaround though ... see my post here
https://stackoverflow.com/a/18787740/1780102
Upvotes: 0
Reputation: 7458
There's a difference between Handlebars & Ember.Handlebars, Ember extends Handlebars internally to add extra functionality.
That being said you are using the wrong helper here, you need to use Ember.Handlebars.registerBoundHelper
.
Ember.Handlebars.registerBoundHelper('hasHitTarget', function(attribute) {
if (attribute.actual >= attribute.target) {
return block(this);
}
});
Upvotes: 2