如何将2d数组从JavaScript传递到ejs中的脚本标签?

时间:2019-03-19 18:31:28

标签: javascript arrays node.js multidimensional-array ejs

我正在尝试将2d虚假数组从我项目的index.js文件传递到ejs文件的脚本部分。

index.js

class GameViewController: UIViewController {
  override func viewDidLoad() {
    super.viewDidLoad()
    let scene =
      GameScene(size: view.bounds.size)
    let skView = self.view as! SKView
    scene.scaleMode = .aspectFill
    skView.presentScene(scene)
  }

基于其他人相关文章的一些堆栈答案,我在ejs文件中尝试了以下实现:

nextpage.ejs

app.get('/nextpage',(req,res)=>{
    var arr = function I have to make a 2d array ;)
    res.render('pages/nextpage.ejs',{
        arr: arr
    });
});

我以为我很近。我试图传递一个3x3数组,这就是我得到的:

它不是为2d数组中的每个值渲染按钮,而是为字符串中的每个字符渲染按钮。我正在寻找的是能够为2d数组的每个条目显示按钮的功能。更具体地说,如何允许ejs文件的script标签访问文件其余部分可以访问的相同变量?

1 个答案:

答案 0 :(得分:1)

如果您将数据从后端传递到前端,则必须正确地序列化它,通常使用JSON:

 "<%=JSON.stringify(arr)%>"
// ->
var arr = JSON.parse( document.getElementById("script").getAttribute('arr'));

但这太丑了。为什么不直接使用EJS直接生成按钮?

<% for(const sub of arr) { %>
  <% for(const el of sub) { %>
    <button> <%= el %> </button>
  <% } %>
<% } %>