3

我正在使用自定义 Handlebars 助手来扩展“if”块的功能。

在 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}}

但这会返回错误“无法读取未定义的属性‘调用’”

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

帮助器的此解决方案以前取自handlebars.js {{#if}} 条件中的逻辑运算符

4

1 回答 1

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}}
于 2015-02-17T15:38:39.653 回答