把手传递给帮手的把手

时间:2013-03-11 12:33:33

标签: ember.js handlebars.js

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

name: 'Bob'
xs: {
    'actual':50
    'target':55
}

我有大约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}}

我在网上看到的所有内容都说 应该工作。但事实并非如此。当我console.log(attribute)时,它会将user.xs作为字符串返回。发生了什么事?

2 个答案:

答案 0 :(得分:2)

Handlebars& amp; Ember.Handlebars,Ember在内部扩展了Handlebars以增加额外的功能。

如果说你在这里使用了错误的助手,你需要使用Ember.Handlebars.registerBoundHelper

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

答案 1 :(得分:0)

从#each中将一个对象传递给Handlebars Helper并不能按预期工作,由于Ember中的一个错误(目前是v1.0),虽然有一个解决方法...请参阅我的帖子

https://stackoverflow.com/a/18787740/1780102