【问题标题】:How to render an array in an html file? - Node.js, ejs如何在 html 文件中呈现数组? - Node.js,ejs
【发布时间】:2014-01-24 16:25:05
【问题描述】:

我正在做一个项目,它将使用 txt 文件中的给定坐标并绘制它们。 我现在的问题:我正在尝试使用 ejs 将坐标呈现到我的 html 文件中,但它只是无法正常工作。 Ejs 总是只渲染:未定义。

代码如下:

var http = require('http'),  
    fs = require('fs'),
    express = require('express'), 
    app     = express(); 
    app.use(express.bodyParser());
    app.set('view engine', 'ejs');
    app.engine('html', require('ejs').renderFile); 
    app.use(express.static(__dirname + '/public'));

//Readerfunction 
function readLines(input, done) {
   //..... 

function done(arr) { 
    var obj = {};
    var key1 = arr[0][0];
    var key2 = arr[0][1];
    obj[key1] = [];
    obj[key2] = [];

    arr.shift();

    arr.forEach(function (item) {
        obj[key1].push(item[0]);
        obj[key2].push(item[1]);
    });

      console.log('X:', obj[key1]); // all the variables are logged correctly. 
      console.log('Y:', obj[key2]); 

    app.get('/', function(req, res) {   
          res.render('graph.html', {cordinates: obj});  
}); 
    app.listen(8080, function() {
  console.log('Server running at http://127.0.0.1:8080/');
});
}

在html文件中:

<%= cordinates.obj %> 

希望你能帮助我,解决这个问题! :-)

您好, JS

【问题讨论】:

    标签: javascript arrays node.js


    【解决方案1】:

    好吧,我认为这是问题所在:您将obj 传递给render 作为coordinates,因此您应该直接在模板中使用coordinates 变量,不,它是obj 属性,这是非-存在。我不确定它是否会被渲染为正确的数组,也许你需要一个循环来打印它的元素。

    【讨论】:

    • 为什么 obj 属性不存在?
    • 因为您的模板中的coordinates 变量将是obj,所以您实际上是在那里调用obj.obj
    • 知道了。主要问题是渲染时没有定义 obj 。例如,我可以将坐标更改为 test.obj 但它仍然未定义..
    • 问题在于您如何在模板中访问它。如果服务器代码是:res.render('graph.html', {cordinates: obj});,那么模板代码应该是:&lt;%= cordinates %&gt; render 的第二个参数将模板变量 coordinates 映射到 obj 值。
    • 是否可以调用 res.render 两次? - 我想发送 和 ,但一次只能发送一个 ..
    猜你喜欢
    • 2012-01-29
    • 2013-03-09
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 2012-05-06
    相关资源
    最近更新 更多