我正在使用车把模板。如果我想在 hbs 文件中插入变量,我将其添加为{{var_name}}.
问题是,我有一个大对象,其键的格式类似于:
{
"stats.name":"John",
"stats.performance.day":123,
"stats.performance.month":4567,
"company":"My LLC"
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试将它们添加到 Handlebars 文件中,那么只会显示{{company}}, {{stats.name}}, {{stats.performance.day}}, {{stats.performance.month}}它们。{{company}}所有其他值都显示为空白,我认为是因为“。” 是《Handlebars》中的一个特殊角色。
我的问题是,有没有办法覆盖它,或者我实际上需要迭代这个对象并更改每个“。” 在将其传递给 Handlebars 使其工作之前,先将其转换为“_”或其他内容?
我建议重命名您的属性。点表示法是 JavaScript 中访问对象属性的两种方法之一。典型的代码如下所示obj.prop:如果你的对象的键不是有效的标识符,那么你必须使用括号表示法:obj['my-prop']。由于点是属性访问器,因此在属性名称中很少见到点。如果我遇到编写为 的代码obj['stats.performance.date'],我会认为这是一个错误,并且这obj.stats.performance.date是有意的。
话虽如此,Handlebars确实支持引用不是有效标识符的属性。这称为“段文字表示法”,它就像用方括号括住标识符一样简单:
{{[stats.performance.day]}}
Run Code Online (Sandbox Code Playgroud)
该文档还指出:
JavaScript 风格的字符串 " 和 ' 也可以与 [ 配对使用。
因此以下替代方案是有效的:
{{"stats.performance.day"}}
{{'stats.performance.day'}}
Run Code Online (Sandbox Code Playgroud)