在我的js文件中,我传递了一个带有两个键的JSON对象 - {' tests&#39 ;: tests,' isComplete':isComplete}
在我的手柄文件中,我想根据每个测试状态显示测试对象。与此同时,还有另一个条件,我添加了一个名为' isRequired'只有当isComplete不为真时我想检查测试。
{{#if isComplete}}
{{#each tests}}
{{#isRequired this}}
// display data
{{/isRequired}}
{{/each}}
{{else}}
{{#each tests}}
// display data
{{/each}}{{/if}}
此代码具有重复的代码来显示数据。我还在学习把手,不知道如何消除这个冗余的代码块。你能帮我解释一下这个怎么重构吗?谢谢!
答案 0 :(得分: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}}
请注意,仅当 isRequired
为isComplete
时,此实现才会应用true
逻辑。这与模板代码示例中存在的规则相同。但是,这些规则似乎与您的问题文本相矛盾,该文本指定只有当isComplete不为真时才应用isRequired
。如果这些是我们必须满足的要求,我们只需要从新的保护条款中删除not运算符:
if (isComplete) { return options.fn(context); }