2015-03-27 4 views
0

Я не следующий код в моем server.jsПопутный объекты между nodejs и нефритом

var cddata = []; 
    body.rows.forEach(function(doc) { 
    cddata.push([{id: doc.id, name: doc.key, text:doc.value.Time, group: 1}]);    
    }); 
    response.render('timeline', {cddata: JSON.stringify(cddata)}); 

и у меня есть следующие в моей точки зрения файл Джейд

script(src='vis/dist/vis.js')   
link(rel="stylesheet", href="vis/dist/vis.css", type="text/css") 

script. 
    //alert(cddata);  
    var options = {}; 
    var data = new vis.DataSet(cddata); 
    var container = document.getElementById('visualization'); 
    new vis.Timeline(container, data, options); 

Однако ничего, связанные с таблицей отображается. Я предполагаю, что объект неправильно передан в нефритовый файл. Пожалуйста помоги!

Также есть способ проверить входящий объект в Jade? Предупреждения не работают. thanks

+1

Смотрите мой ответ на аналогичный вопрос: http://stackoverflow.com/a/18089174/1380669 – Plato

ответ

0

<script> в вашем нефрите является скриптом браузера, поэтому доступ к переменным в области создания шаблонов невозможен. Вам нужно выводить данные в формате JSON и прочитать его в стороне браузера JavaScript, что-то вроде этого:

script(src='vis/dist/vis.js')   
link(rel="stylesheet", href="vis/dist/vis.css", type="text/css") 

script. 
    var chartData = JSON.parse('#{cddata}') 
    var options = {}; 
    var data = new vis.DataSet(chartData); 
    var container = document.getElementById('visualization'); 
    new vis.Timeline(container, data, options); 
+0

Спасибо. Я изменил свой файл сервера, чтобы включить response.locals.docsJSON = JSON.stringify ([dbdata]); и файл нефрита для включения var chartData = JSON.parse ('# {dbdata}') var options = {}; var data = new vis.DataSet (chartData); var container = document.getElementById ('визуализация'); новый vis.Timeline (контейнер, данные, опции); Нет выхода. Я проверил объект JSON, отправленный из файла сервера, с помощью response.send (response.locals.docsJSON); Это выглядит правильно. – user1384205

+0

Также здесь выглядит, как выглядит json при чтении с использованием response.send (response.locals.docsJSON); [ [ [ { \t "идентификатор": "0581fe6a52fbc348f1e8825728ecea08", \t "Название": "БДЗ", \t "Текст": "105", \t "группа": 1 \t} ] , [ { \t "идентификатор": "2d167d859de1b4ff1d4bb3691268e3a4", \t "название": "БДЗ", \t "текст": "30", \t "группа": 1} ], – user1384205

0

После долгих раздумий, следующий работал, чтобы передать объект с сервера узла на стороне клиента сервера сценариев на Джейд файл.

на server.js, где dbdata является массив JSON объектов

response.render('timeline', {dbdata:dbdata}); 

О файле нефрита,

script. 
    var chartData = !{JSON.stringify(dbdata)}; 

Спасибо,