Node.js 包含在把手中的if语句

Node.js 包含在把手中的if语句,node.js,handlebars.js,Node.js,Handlebars.js,我试图在hbs中动态生成一系列复选框。我在数据库中存储了一组数组,如果数组包含正确的数字,我希望生成一个已经选中的复选框 我试着制作一个只返回array.includes(num)的助手;我已经通过日志验证了这一切都可以正常工作,但是如果我将助手插入到一个#if标记中,我会遇到许多设计器错误之一,从array.includes不是函数到((depth0&&depth0.days_of_week)| alias2)。调用不是函数。我甚至尝试过制作一些半静态的助手,这样我只需要传递一个参数,而不是两

我试图在hbs中动态生成一系列复选框。我在数据库中存储了一组数组,如果数组包含正确的数字,我希望生成一个已经选中的复选框

我试着制作一个只返回array.includes(num)的助手;我已经通过日志验证了这一切都可以正常工作,但是如果我将助手插入到一个#if标记中,我会遇到许多设计器错误之一,从array.includes不是函数到((depth0&&depth0.days_of_week)| alias2)。调用不是函数。我甚至尝试过制作一些半静态的助手,这样我只需要传递一个参数,而不是两个,这没有任何区别

hbs.registerHelper('daysOfWeek', (array, dayNum) => {
    return array.includes(dayNum);
});

周日
星期一

语法应该是
{{{if(daysOfWeek days{u of u week 0)}}选中的{{/if}
。您的助手函数是正确的

<input type="checkbox" name="daysOfWeek" value="0" {{#if (daysOfWeek days_of_week 0)}}checked{{/if}}>Sunday
<input type="checkbox" name="daysOfWeek" value="1" {{#if (daysOfWeek days_of_week 1)}}checked{{/if}}>Monday
周日
星期一

if
语句正在检查某物的整个返回,因此在您的例子中,它是带有两个参数的helper函数:
(daysOfWeek days\u of u week 0)

您是否尝试在
this.days\u of u week
0
1
之间加逗号?我试过了,但没有用。我得到的错误是:应为'ID','STRING','NUMBER','BOOLEAN','UNDEFINED','NULL','DATA',得到'INVALID',好的。这是有道理的,完全解决了,谢谢。出于好奇,您知道为什么if语句中不需要“this”吗?
this
关键字在迭代数组(例如,对当前项的引用)时非常有用。属性
days\u of_week
在此上下文中(或者您可以说是“全局范围”)直接可用。
<input type="checkbox" name="daysOfWeek" value="0" {{#if (daysOfWeek days_of_week 0)}}checked{{/if}}>Sunday
<input type="checkbox" name="daysOfWeek" value="1" {{#if (daysOfWeek days_of_week 1)}}checked{{/if}}>Monday