如何创建模板助手

meg*_*gas 0 helper handlebars.js ember.js discourse

我想创造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];
});
Run Code Online (Sandbox Code Playgroud)

并以这种方式在模板中使用它:

{{#if (eq param1 param2)}} <h1>hello</h1> {{/if}}
Run Code Online (Sandbox Code Playgroud)

但是eq没有定义.

创建助手的正确方法是什么?

wal*_*lop 5

看起来你正在使用ember-cli,如果这样,请通过ember-cli指南中的生成器

余哥帮助是相等的

将导致最初将成为app/helpers/is-equal.js

import Ember from 'ember';

export function isEqual(params/*, hash*/) {
  return params;
}

export default Ember.Helper.helper(isEqual);
Run Code Online (Sandbox Code Playgroud)

但你可以改成它

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);
Run Code Online (Sandbox Code Playgroud)

现在您可以在模板中使用它了

{{#if (is-equal 'abc' 'ABC' true)}}

{{/if}}
Run Code Online (Sandbox Code Playgroud)