2013-08-05 15 views
9

Desidero caricare il contenuto di una vista parziale (scritta in Jade) in una finestra di dialogo modale Bootstrap. Per questo, io uso una chiamata AJAX. Potrei restituire solo il codice HTML generato e caricarlo nel modale, ma ci sono dati aggiuntivi che ho bisogno di andare d'accordo con la visualizzazione renderizzata. Mi piacerebbe essere in grado di restituire un oggetto come questo (analizzato per JSON):Visualizzazione rendering in una variabile in ExpressJS (per risposta AJAX)

response = { 
    some_data: 'blablabla', 
    some_more_data: [5, 8, 10, 67], 
    my_html: '<div>HTML rendered from the Jade template</div>' 
}; 

C'è un modo per fare questo? Per ora posso restituire il rendering HTML in questo modo:

res.render('employees', {layout: false}); 

Ma come posso conservarlo in una variabile di tornare insieme più dati, senza la necessità di fare di più chiamate AJAX?

risposta

21

in veloce è possibile utilizzare app.render con un callback per rendere la vista e ottenere il codice HTML:

app.render('employees', {layout: false}, function(err, html){ 
    var response = { 
    some_data: 'blablabla', 
    some_more_data: [5, 8, 10, 67], 
    my_html: html 
    }; 
    res.send(response); 
}); 
+1

sembra essere quello che stavo cercando! Ma c'è un modo per farlo senza dover passare l'intero parametro 'app'? Il codice sopra è in un file routes.js e non sono sicuro di come posso usare/passare l'app qui ... –

+5

Puoi ottenere un'istanza nel tuo percorso attraverso res.app –

+0

Funziona perfettamente! Grazie mille! –

Problemi correlati