arrays - 通过 Handlebars 模板将数组从 Express 传递到客户端的 JavaScript
问题描述
我在渲染视图时传递了一个字符串数组:
const questionTypes = ['NUMERIC_OPEN', 'TEXT_OPEN', 'SINGLE_CHOICE', 'MULTI_CHOICE']
来自express.js路由器:
router.get('/admin', async (req, res) => {
try {
// some code
// ...
return res.render('admin', { questionTypes })
} catch (error) {
//error handling
}
})
在admin.hbs
我试图访问该数组并将其传递给客户端的 Javascript 代码:
<script>
var questionTypes = '{{ questionTypes }}'
</script>
现在,当我从 javascript 代码访问它时,它显示为 string: "NUMERIC_OPEN,TEXT_OPEN,SINGLE_CHOICE,MULTI_CHOICE"
,显然是因为node.js在呈现 HTML 时对视图参数执行 toString() 。
- 在客户端,我可以
questionTypes.split(',')
将数组恢复到原来的形式,但感觉就像在执行双重工作。 - 如果这种方式不起作用:
'{{ questionTypes }}'
,也许有内置的 Handlebars 助手可以将实际数组传递给 javascript,尽管它仍然是一项双重工作...... - 我渲染视图并将数据传递给客户端 js 的方式是否正确?
解决方案
推荐阅读
- bash - 如何从 npm 脚本运行 pyenv 命令?
- node.js - 在 Elasticsearch 中使用自动生成的 id 替换/更新文档
- python - Mongodb Atlas - 如何用新的 JSON 对象数组替换集合的全部内容?
- ansible - 如果任务的结果失败,changed_when 不工作
- html - 如何将我的标题徽标移动到菜单项上方?
- docker - 错误 [build 6/6] 运行 dotnet publish "" -c Release -o /app/publish
- terraform - 在 Terraform 中指定模块的位置时使用变量
- javascript - Sequelize:与upsert的多对多关系?
- swift - NSTextField 如何设置 NSAttributedString 的 TextStyle 属性
- mpesa - 如何解决 Safaricom C2B 错误“无法识别主机代理”