首页 > 解决方案 > 通过 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() 。

  1. 在客户端,我可以questionTypes.split(',')将数组恢复到原来的形式,但感觉就像在执行双重工作。
  2. 如果这种方式不起作用:'{{ questionTypes }}',也许有内置的 Handlebars 助手可以将实际数组传递给 javascript,尽管它仍然是一项双重工作......
  3. 我渲染视图并将数据传递给客户端 js 的方式是否正确?

标签: arraysnode.jsexpresshandlebars.js

解决方案


推荐阅读