handlebars - 在两个条件下使用#if 助手
handlebars - using #if helpers with two conditions
在我的 js 文件中,我传递了一个带有两个键的 JSON 对象 - {'tests': tests, 'isComplete': isComplete}
在我的 handlebars 文件中,我想根据每个测试状态显示测试对象。同时,还有另一个条件,我添加了一个名为 'isRequired' 的助手,我只想在 isComplete 不为真时检查测试。
{{#if isComplete}}
{{#each tests}}
{{#isRequired this}}
// display data
{{/isRequired}}
{{/each}}
{{else}}
{{#each tests}}
// display data
{{/each}}{{/if}}
此代码有重复代码显示数据。我仍在学习车把,不确定如何消除这个冗余代码块。你能帮我重构这个吗?谢谢!
我可能会通过向您的 isRequired
助手添加一个 isComplete
参数来解决这个问题。您还没有为您的助手提供代码,但我想它最终会看起来像这样:
Handlebars.registerHelper('isRequired', function (context, isComplete, options) {
if (!isComplete) { return options.fn(context); }
/* rest of isRequired implementation here */
});
您的模板将更新如下:
{{#each tests}}
{{#isRequired this ../isComplete}}
// display data
{{/isRequired}}
{{/each}}
请注意,此实现仅在 isComplete
为 true
时才应用 isRequired
逻辑 。这与模板代码示例中存在的规则相同。但是,这些规则似乎与您的问题文本相矛盾,该文本指定应应用 isRequired
"only if isComplete is not true"。如果这些是我们必须满足的要求,我们只需要从新的保护子句中删除 not 运算符:
if (isComplete) { return options.fn(context); }
在我的 js 文件中,我传递了一个带有两个键的 JSON 对象 - {'tests': tests, 'isComplete': isComplete}
在我的 handlebars 文件中,我想根据每个测试状态显示测试对象。同时,还有另一个条件,我添加了一个名为 'isRequired' 的助手,我只想在 isComplete 不为真时检查测试。
{{#if isComplete}}
{{#each tests}}
{{#isRequired this}}
// display data
{{/isRequired}}
{{/each}}
{{else}}
{{#each tests}}
// display data
{{/each}}{{/if}}
此代码有重复代码显示数据。我仍在学习车把,不确定如何消除这个冗余代码块。你能帮我重构这个吗?谢谢!
我可能会通过向您的 isRequired
助手添加一个 isComplete
参数来解决这个问题。您还没有为您的助手提供代码,但我想它最终会看起来像这样:
Handlebars.registerHelper('isRequired', function (context, isComplete, options) {
if (!isComplete) { return options.fn(context); }
/* rest of isRequired implementation here */
});
您的模板将更新如下:
{{#each tests}}
{{#isRequired this ../isComplete}}
// display data
{{/isRequired}}
{{/each}}
请注意,此实现仅在 isComplete
为 true
时才应用 isRequired
逻辑 。这与模板代码示例中存在的规则相同。但是,这些规则似乎与您的问题文本相矛盾,该文本指定应应用 isRequired
"only if isComplete is not true"。如果这些是我们必须满足的要求,我们只需要从新的保护子句中删除 not 运算符:
if (isComplete) { return options.fn(context); }