提问者:小点点

将对象传递到辅助程序的句柄


目前我有一个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}}

我在网上读到的一切都说这应该有效。但事实并非如此。当我控制台. log(属性)时,它将user.xs作为字符串返回。这是怎么回事?


共2个答案

匿名用户

车把是有区别的

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

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

匿名用户

由于Ember(目前是v1.0)中的一个bug,从#each中将对象传递给Handlebar Helper并不能按预期工作,不过有一个解决方法…请参阅我在这里的帖子

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