5

目前我有一个看起来像这样的 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这是怎么回事?

4

2 回答 2

2

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

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

Ember.Handlebars.registerBoundHelper('hasHitTarget', function(attribute) {
  if (attribute.actual >= attribute.target) {
    return block(this);
  }
});
于 2013-03-11T14:19:04.730 回答
0

由于 Ember 中的错误(当前为 v1.0),从 #each 中将对象传递给 Handlebars Helper 无法按预期工作,但有一种解决方法......请参阅我的帖子here

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

于 2013-09-13T13:54:05.110 回答