Javascript 在车把中,如何转义字段名称中的特殊字符?

Javascript 在车把中,如何转义字段名称中的特殊字符?,javascript,handlebars.js,Javascript,Handlebars.js,例如,我有这样一个对象: { '#SKU_NBR': '123' } 我想打印出值,但简单的语法不起作用: <div>{{#SKU_NBR}}<div> {{{SKU_NBR} 如何转义字段名称,以便在Handlebar中的模板表达式中使用它?解决此问题的一种方法是使用辅助函数。我制作了一个名为get的函数,它只获取一个基于字符串的字段 import Handlebars from 'handlebars' import get from 'lodash/get'

例如,我有这样一个对象:

{ '#SKU_NBR': '123' }
我想打印出值,但简单的语法不起作用:

<div>{{#SKU_NBR}}<div>
{{{SKU_NBR}

如何转义字段名称,以便在Handlebar中的模板表达式中使用它?

解决此问题的一种方法是使用辅助函数。我制作了一个名为
get
的函数,它只获取一个基于字符串的字段

import Handlebars from 'handlebars'
import get from 'lodash/get'

Handlebars.registerHelper('get', function (path, opts) {
    return get(opts, `data.root.${path}`)
})

const template = Handlebars.compile('{{get "#upc"}}');
const result = template({ '#upc': 'abc123' })

console.log(result) // abc123
您可以在子表达式中使用它,如下所示:

{{tolowercase (get "#upc")}}

要详细说明bigless的答案,您可以使用以下任一选项:

  • {{[#SKU_NBR]}
它们解析转义字符中命名的变量(而不是只包含字符串
#SKU_NBR


我有一个类似的问题,因为我的变量名为
this
with
。我发现
{{[this]}}
按预期工作,但
{{[with]}}
没有。我可以通过使用
{{this.with}}

来解决这个问题,您尝试了什么?
{{35;SKU_NBR}}
有效吗?我尝试了
{{{35;SKU_NBR}}
(显然),
{{35;SKU_NBR}
{{35;SKU__NBR}
您的建议在第1行给了我
解析错误:{35;SKU ID},{NBR},无效,,,,,,“未定义的布尔值”,“未定义的字符串”,“未定义的数据”“
我确实有一个解决办法,但我想在发布到这里之前看看是否有人有更好的答案。为什么不直接在对象键中删除
?对我来说,坚持使用
{SKU_NBR:'123}
@mccambridge似乎更容易,因为它来自第三方CSV文件,我使用的库只是逐字使用列名。从文件中发出的每一行都有这个键名,我通常将这些模板应用于字段。我可能最终只是将其剥离出来,但这可能会很烦人,因为它们与实际的列名不匹配。但如果可能的话,我宁愿知道如何逃离他们,如果不可能,我可能会想出类似的办法。我确实设法想出了如何与助手一起做这件事。有这么多的可能性<代码>{{{SKU_NBR}
{{{{SKU_NBR}
{[{SKU_NBR]}
。就选一个吧
#
是把手块表达式的语法前缀。顺便说一句,已经回答了。