javascript - Ember 的 registerBoundHelper 和 Handlebars block

标签 javascript ember.js handlebars.js

所以我从 here 中获取了“is”辅助 block 并修改它,以便它使用 registerBoundHelper 通过 Ember 注册它的助手

我这样做的原因是因为我基本上需要一个基于 Handlebars 的“switch”语句。我的 Handlebars 的最终结果如下:

{{#is MyProperty 1}}
    ...Do something here...
{{/is}}
{{#is MyProperty 2}}
    ...Do something here...
{{/is}}
{{#is MyProperty 3}}
    ...Do something here...
{{/is}}
{{#is MyProperty 4}}
    ...Do something here...
{{/is}}

is 语句只是在“MyProperty”的和常量之间进行简单的比较。

如果我不使用“registerBoundHelper”,MyProperty 将作为字符串文字“MyProperty”传递,而不是它的

现在:当我实际运行它时,这个逻辑似乎有效

问题是 Ember 抛出以下错误:

registerBoundHelper-generated helpers do not support use with Handlebars blocks.

我是否应该忽略此错误并继续,因为它似乎确实有效?或者我应该尝试重新设计逻辑以不使用 block ?

最佳答案

您不应该忽略它,因为它不受支持,如果 MyProperty 在渲染发生后发生更改,它将中断。

ember Handlebars 不支持条件助手(导致我们很多人死亡)。原因是核心团队希望将此逻辑作为计算属性而不是模板中的逻辑。

IE

Controller

App.IndexController = Em.ObjectController.extend({
  isPropertyOne: Em.computed.equal('myProperty', '1')
});

模板

  {{#if isPropertyOne}}
    any template stuff
    {{render 'something'}}
    {{someValue}}
  {{/if}}

关于javascript - Ember 的 registerBoundHelper 和 Handlebars block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21387694/

相关文章:

javascript - 如何正确使用父元素

javascript - 使用 javascript 提取并探索 .ZIP 文件夹中的文件修改时间戳

javascript - jqgrid加载数组数据

ember.js - 在 ember 路由器 v2 中使用非 ID 动态参数

javascript - 如何从动态属性将 IMG 插入到 DOM 中?

javascript - 我如何在 Ember 中创建部分?

javascript - 我们如何自定义排序 JavaScript 对象键?

javascript - KeystoneJS - 创建新项目抛出重复键错误

javascript - 如何在 EmberJS 模板中访问存储在其他变量中的键中的对象属性的值?

javascript - 在每个循环中访问 Handlebars.js 范围之外的变量