0

在我的 js 文件中,我传递了一个带有两个键的 JSON 对象 - {'tests': tests, 'isComplete': isComplete}

在我的车把文件中,我想根据每个测试状态显示测试对象。同时,还有另一个条件,我添加了一个名为“isRequired”的助手,我只想在 isComplete 不为真时检查测试。

{{#if isComplete}}
{{#each tests}}
    {{#isRequired this}}
        // display data
    {{/isRequired}}
{{/each}}
{{else}}
{{#each tests}}
    // display data
{{/each}}{{/if}} 

此代码具有显示数据的重复代码。我还在学习车把,不知道如何消除这个冗余代码块。你能帮我如何重构它吗?谢谢!

4

1 回答 1

1

我可能会通过向你的助手添加一个isComplete参数来解决这个问题。isRequired您还没有为您的助手提供代码,但我想它最终会看起来像这样:

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}}

请注意,此实现仅在is时应用isRequired逻辑。这与模板代码示例中存在的规则相同。但是,这些规则似乎与您的问题文本相矛盾,该文本指定“仅当 isComplete 不正确时”才应应用。如果这些是我们必须满足的要求,我们只需从新的保护子句中删除 not 运算符: isCompletetrueisRequired

 if (isComplete) { return options.fn(context); }
于 2016-07-26T03:07:34.563 回答