2014-01-24 30 views
0

我正在開發一個項目,它將使用來自txt文件的給定座標並繪製它們。 我現在的問題:我試圖使用ejs將座標渲染到我的html文件,但它只是不正確。 Ejs總是呈現:未定義。如何在HTML文件中渲染數組? - Node.js,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

回答

1

嗯,我認爲現在的問題是:你是路過objrendercoordinates,所以你應該在你的模板直接使用coordinates變量,沒有它obj屬性,該屬性是不存在的。我不確定它是否會被渲染爲適當的數組,但也許你需要一個循環來打印它的元素。

+0

爲什麼obj屬性不存在? – JSt

+1

由於模板中的座標變量是'obj',所以實際上在那裏調用'obj.obj'。 –

+0

明白了。主要的問題是在渲染時沒有定義obj。我可以將例子更改爲test.obj,但它仍然未定義。 – JSt