使用'if'嵌套Handlebars'lookup'

时间:2018-02-19 10:01:51

标签: javascript handlebars.js helper

这是关于是否可以使用lookup块助手嵌套Handlebars if助手的Q& A,如果没有,是否有任何替代解决方案?

下面的示例场景,我们需要检查'arrayOne'中的项是否存在于'arrayTwo'中。

{{#each arrayOne}}
    {{#if lookup ../arrayTwo @index}}
      {{this}} - This arrayOne item is present in arrayTwo
    {{else}}
      {{this}} - This arrayOne item is NOT present in arrayTwo
    {{/if}}
{{/each}}

1 个答案:

答案 0 :(得分:1)

答案为“否”,因为Handlebars语法不允许将if块助手与lookup助手嵌套。

解决方案是创建一个自定义帮助器(isItemExist)来检查'arrayTne'中的项是否存在于'arrayTwo'中,

Handlebars.registerHelper("isItemExist", function(array, value, options) {
  return value < array.length ? options.fn(this) : options.inverse(this);
});

模板就是,

{{#each arrayOne}}
  {{#isItemExist ../arrayTwo @index}}
    {{this}} - This arrayOne item is present in arrayTwo
  {{else}}
    {{this}} - This arrayOne item is NOT present in arrayTwo
  {{/isItemExist}}
{{/each}}

希望这有帮助。