我正在尝试在我的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 = ">"}}
答案 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}}
。