如何创建模板助手
How to create template helper
我想创建 eq
助手。它已经存在于 ember-truth-helpers
插件中,但我只需要 eq
助手,所以我决定在我的插件中自己创建它。
我在我的插件中创建了包含以下内容的文件 assets/javascripts/discourse/helpers/eq.js.es6
:
import { registerHelper } from 'discourse/lib/helpers';
registerHelper('eq', function(params) {
return params[0] === params[1];
});
并以这种方式在模板中使用它:
{{#if (eq param1 param2)}} <h1>hello</h1> {{/if}}
但是eq
没有定义。
helper 的正确创建方式是什么?
看起来您正在使用 ember-cli,如果是这样,请通过 ember-cli 指南
中的生成器
ember g helper is-equal
将导致 app/helpers/is-equal.js 最初将是
import Ember from 'ember';
export function isEqual(params/*, hash*/) {
return params;
}
export default Ember.Helper.helper(isEqual);
但您可以将其更改为
export function isEqual([leftSide, rightSide, isCaseInsensitive]) {
let ret;
if (isCaseInsensitive) {
ret = (leftSide.toLowerCase() === rightSide.toLowerCase());
} else {
ret = (leftSide === rightSide);
}
return ret;
}
export default Ember.Helper.helper(isEqual);
现在您可以在模板中将其用作
{{#if (is-equal 'abc' 'ABC' true)}}
{{/if}}
问题出在边界上。此代码对我有用:
import { registerHelper } from 'discourse/lib/helpers';
var makeBoundHelper = Ember.HTMLBars.makeBoundHelper;
registerHelper('eq', makeBoundHelper(function(params) {
return params[0] === params[1];
}));
解决方案取自here
我想创建 eq
助手。它已经存在于 ember-truth-helpers
插件中,但我只需要 eq
助手,所以我决定在我的插件中自己创建它。
我在我的插件中创建了包含以下内容的文件 assets/javascripts/discourse/helpers/eq.js.es6
:
import { registerHelper } from 'discourse/lib/helpers';
registerHelper('eq', function(params) {
return params[0] === params[1];
});
并以这种方式在模板中使用它:
{{#if (eq param1 param2)}} <h1>hello</h1> {{/if}}
但是eq
没有定义。
helper 的正确创建方式是什么?
看起来您正在使用 ember-cli,如果是这样,请通过 ember-cli 指南
中的生成器ember g helper is-equal
将导致 app/helpers/is-equal.js 最初将是
import Ember from 'ember';
export function isEqual(params/*, hash*/) {
return params;
}
export default Ember.Helper.helper(isEqual);
但您可以将其更改为
export function isEqual([leftSide, rightSide, isCaseInsensitive]) {
let ret;
if (isCaseInsensitive) {
ret = (leftSide.toLowerCase() === rightSide.toLowerCase());
} else {
ret = (leftSide === rightSide);
}
return ret;
}
export default Ember.Helper.helper(isEqual);
现在您可以在模板中将其用作
{{#if (is-equal 'abc' 'ABC' true)}}
{{/if}}
问题出在边界上。此代码对我有用:
import { registerHelper } from 'discourse/lib/helpers';
var makeBoundHelper = Ember.HTMLBars.makeBoundHelper;
registerHelper('eq', makeBoundHelper(function(params) {
return params[0] === params[1];
}));
解决方案取自here