2013-03-12 9 views
5

Ich verwende meine Knoten-App, um einige Daten von einer API abzurufen und diese Daten in einer Ansicht anzuzeigen und dem Benutzer zu ermöglichen, sie dort zu ändern. Ich rufe die API an und erhalte eine JSON-Antwort, die ich an die Ansicht weitergeben möchte. Hier ist, was ich tue:Übergeben von Daten zur Anzeige in Knoten + Express

var query = 'SELECT Id, OwnerId, ActivityDateTime, EndDateTime, WhatId, WhoId, Subject FROM Event WHERE OwnerId = \'' + user.userId + '\'' ; 
    // execute the query and get response 
    ... 
    ... 
    var ev = resp.records; 
    res.render('index.html', {eventData : ev}); 

Problem ist, dass, wenn ich dann die Daten aus meiner Sicht verwenden möchten, ich einen undefinierten Fehler.

Wenn ich tun:

<div id='Subject'>#{eventData.Subject}</div> 

Ich bekomme einen Ausdruck von # {eventData.Subject}

Der Versuch, die Daten zu verwenden, in JS einen undefinierten Fehler zurückgibt:

<script type="text/javascript"> 
    var mydata = #{eventData}; 
    </script> 

Nach einigem Suchen fand ich einen Beitrag, der vorschlug, ihn zuerst zu stringieren:

var mydata = !{JSON.stringify(eventData)}; 
    console.log(mydata); 
Hier

, bekomme ich einen Syntaxfehler „Syntaxerror: fehlend: nach Immobilien ID“

Ich bin ziemlich sicher, ich etwas Grundsätzliches bin fehlt und kann nicht für das Leben von mir es herausfinden. Ich habe eine Menge Artikel-Beispiele gefunden, die erklären, wie man es in Jade macht, aber ich möchte Jade nicht verwenden und die Empfehlungen aus den Artikeln führen zu "undefinierten" oder "illegalen Charakterfehlern".

Ich bin alle aus Ideen ... Hilfe? Tnx

+3

welches Templating-System verwenden Sie? –

+0

Ich verwende einen benutzerdefinierten Handler: app.register ({ Kompilierung: function (str, Optionen) { return-Funktion (Einheimische) { return str; }; } } html. '); –

Antwort

3

Jonathan Ongs Kommentar brachte mich tatsächlich auf den richtigen Weg. Da ich einen Kundenhandler für HTML benutzte, würde es keine Variablen interpretieren.

Ich wechselte ejs zu verwenden:

 // view engine ejs 
    app.set('view engine', 'ejs'); 
    app.register('.html', require('ejs')); 

und verwendet, um die folgenden Platzhalter:

<%= eventData.Subject %> 

Dies ist eigentlich meine Daten zeigen, gemacht. Danke für alle Kommentare und Antworten! Michael

+1

Sie sollten Ihre Antwort akzeptieren, es wird es für Leute nützlich machen, die nach ähnlichen Problemen suchen. – booyaa

Verwandte Themen