在EmberJS中使用把手

时间:2015-10-27 11:06:21

标签: javascript ember.js handlebars.js

我正在尝试在我的Ember项目中使用自定义助手。 所以我做到了 凉亭安装 - 保存把手

然后在helpers \ compare.js下,我有

import Handlebars from 'handlebars';

Handlebars.registerHelper('compare', function (lvalue, rvalue, options) {
}

这是导入Handlebars js并在helper中使用它的正确方法吗?

更新

我现在得到"断言失败:帮助可能不会以阻止形式使用,例如{{#my-helper}} {{/ my-helper}}。请使用组件,或者将帮助器与内置的Ember助手结合使用,例如{{#if(my-helper)}} {{/ if}}。

我想使用以下

{{#compare model.someCount 0 operator = ">"}}

1 个答案:

答案 0 :(得分:0)

<强>更新 这里是一个JSBin,展示了如何使用组件来完成此操作而不是帮助程序,因为在生成的帮助程序中并不真正支持块帮助程序:http://emberjs.jsbin.com/puminocuva/edit?html,js,console,output。请记住,组件需要以-命名,这就是为什么我将其命名为my-compare而不只是compare

创建助手时,文档非常简单:http://guides.emberjs.com/v1.13.0/templates/writing-helpers/

如果您在Ember 1.13中使用Ember CLI 1.13.x,我不确定上面的文件是如何生成的。您应该在Ember CLI控制台中使用ember g helper compare来创建文件。

如果您发现自己需要在视图中进行比较,那么我认为您希望您的逻辑位于控制器中并只生成计算属性,例如:

// some/controller.js
import Ember from 'ember';

const { computed } = Ember;

export default Ember.Controller.extend({
  // (...)
  countGreaterThanTen: computed('model.count', ()=> {
    return this.get('model.count') > 10;
  }),
  // (...)
});

并在模板中使用{{#if countGreaterThanTen}} stuff here {{/if}},而不是通过帮助程序在那里执行复杂的逻辑。

<强>更新 此外,您的错误是因为您尝试使用带有开放块的帮助程序(#是什么)。在模板中使用自己的帮助器时,您只需使用{{compare}}而不是{{#compare}}