帮助者在Ember 1.10中被打破

时间:2015-02-17 09:33:41

标签: ember.js htmlbars

我正在使用自定义Handlebars帮助程序扩展'如果'块。

在Ember 1.10中,由于没有允许绑定到属性的Ember.Handlebars.bind属性,因此不再起作用....

Ember.Handlebars.registerHelper('ifCond', function (a, b, options) {
    return Ember.Handlebars.bind.call(options, contexts[0], a, options, true, function(result) {
        return result === b
    });
});

用法是:

{{#ifCond property "value"}}
    {{some-other-component}}
{{else}}
    something other...
{{/ifCond}}

但是这会返回错误"无法读取属性' call'未定义"

有什么方法可以绑定到helper中传递的属性?我不能使用registerBoundHelper,因为它不支持有子块... 我想使用Component而不是helper但是我不能使用{{else}}块...

此帮助程序的解决方案以前取自Logical operator in a handlebars.js {{#if}} conditional

1 个答案:

答案 0 :(得分:4)

我实际上设法找到了办法,所以我会为自己的问题写出答案......

我没有使用未记录的黑客攻击,而是使用了建议的更改:https://github.com/emberjs/ember.js/issues/10295

所以我的助手现在看起来像这样:

Ember.Handlebars.registerBoundHelper('isSame', function(value1, value2) {
    return value1 === value2
});

和用法:

{{#if (isSame property "value")}}
    {{some-other-component}}
{{else if (isSame property "otherValue"}}
    something other...
{{else}}
    something other...
{{/if}}