【问题标题】:Can I render multiple sources in EJS我可以在 EJS 中渲染多个源吗
【发布时间】:2016-09-14 05:11:43
【问题描述】:

我正在尝试使用来自 2 个不同来源的数据,但使用 EJS、JS 和节点将它们呈现在同一个 HTML 页面上。 这就是我正在尝试的..

app.set('view engine', 'ejs');
app.get('/', function(req, res) {
  res.render('index.ejs', { data: JSONdata })
  res.render('index.ejs', {data2: arrayData})
});

data 是一个 JSON,data2 是一个数组。我试图为这个确切的过程查找正确的语法,但似乎找不到任何东西。

非常感谢。

【问题讨论】:

    标签: javascript node.js express ejs templating


    【解决方案1】:

    您不能对单个请求多次呈现。

    但您可以简单地将 JSON 和数组数据组合起来并对其进行字符串化。

    App.set('view engine', 'ejs');
    app.get('/', function(req, res) {
      res.render('index.ejs', JSON.stringify({data2: arrayData, data1: JSONdata}))
    });
    

    或者干脆将两个变量赋值给一个对象,然后解析给渲染函数

    var returnVals= JSON.stringify({data2: arrayData, data1: jsonData}); 
    

    【讨论】:

    • 谢谢,这成功了!现在我意识到我正在将数据推送到 arrayData,但是 EJS 在完成将我的数据推送到 arrayData 之前正在渲染页面......关于如何解决这个问题的想法。
    • 我不确定你的意思?您能否更详细地发布有关此问题的另一个问题?另外,如果这个答案对您有所帮助,您应该接受它:) @TheGirl440
    • @James111:你好,我找到了你的答案,我有这个 question 已经回答但我更新了,我想知道如何在不同的文件中调用两个 res.render。如果你有一个解决方案,我当然会投票。谢谢!
    • @james111 为什么我需要 JSON.stringify 它而不是将整个东西解析为 json?
    【解决方案2】:

    您不能对单个请求多次呈现。

    但是如果你想显示不同类型的数据,比如:

    SSCResult.find({username:username},function (err, results) {
      var username=req.user.username;
      var fullname =req.user.firstname+' '+req.user.lastname;
      if (err) return console.error(err);
    
      console.log(results);
    
      res.render('sscandhsc',{fullname:fullname,results});
      
    });

    SSCResult 是一个模式。结果就像

    [ { _id: 59f61fe2fec3cc7bf804f95e,
        examtype: 'HSC',
        username: '1',
        __v: 0,
        gpa: '5.00',
        institution: 'New Govt. Degree College, Rajshahi',
        passedyear: '2013',
        board: 'Rajshahi' },
      { _id: 59f6408efec3cc7bf804fc78,
        examtype: 'SSC',
        username: '1',
        __v: 0,
    
        gpa: '5.00',
        institution: 'Taragunia High School',
        passedyear: '2011',
        board: 'Jessore' },
      { _id: 59f656a9fec3cc7bf8050146,
        examtype: 'JSC',
        username: '1',
        __v: 0,
        gpa: '5.00',
        institution: 'Taragunia High School',
        passedyear: '2008',
        board: 'Jessore' } ]

    所以“结果”和全名是不同类型的json,你也可以发送。

    最后,upper(1) 解决方案也是正确的格式相同类型的 json 文件。 谢谢你。希望它会帮助你。 :)

    【讨论】:

      猜你喜欢
      • 2018-04-14
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2018-09-30
      • 1970-01-01
      相关资源
      最近更新 更多