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

时间:2018-06-12 20:24:27

标签: javascript handlebars.js

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

{ '#SKU_NBR': '123' }

我想打印出值,但是这个简单的语法不起作用:

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

如何逃避字段的名称,以便我可以在把手的模板表达中使用它?

2 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是使用助手功能。我制作了一个名为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")}}

答案 1 :(得分:0)

要详细说明bigless的答案,可以使用以下任何一种方法:

  • {{ "#SKU_NBR" }}
  • {{ '#SKU_NBR' }}
  • {{ [#SKU_NBR] }}

这些可解析转义字符中命名的变量(与仅包含字符串#SKU_NBR相对)。

我有一个类似的问题,因为我有名为thiswith的变量。我发现{{[this]}}可以正常工作,但是{{[with]}}却没有。我可以使用{{this.with}}

解决此问题