把手传递给帮手的把手

and*_*ndy 5 handlebars.js ember.js

目前我有一个Ember对象,如下所示:

name: 'Bob'
xs: {
    'actual':50
    'target':55
}
Run Code Online (Sandbox Code Playgroud)

我有大约5-6个类似的字段xs.我需要一个辅助方法,可以获取该xs对象,然后返回目标是否已被命中.

我想过这样做:

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}}
Run Code Online (Sandbox Code Playgroud)

我在网上看到的一切都说这应该有效.但事实并非如此.当console.log(attribute)user.xs以字符串形式返回时.这是怎么回事?

Bra*_*est 2

Handlebars 和 Ember.Handlebars 之间存在差异,Ember 在内部扩展了 Handlebars 以添加额外的功能。

话虽如此,您在这里使用了错误的助手,您需要使用Ember.Handlebars.registerBoundHelper.

Ember.Handlebars.registerBoundHelper('hasHitTarget', function(attribute) {
  if (attribute.actual >= attribute.target) {
    return block(this);
  }
});
Run Code Online (Sandbox Code Playgroud)