2013-08-05 14 views
9

Chcę załadować zawartość częściowego widoku (napisanego w Jade) do okna dialogowego modemu Bootstrap. Do tego używam wywołania AJAX. Mogłem zwrócić tylko wygenerowany kod HTML i załadować go do modala, ale są dodatkowe dane, których potrzebuję, aby uzyskać dostęp do renderowanego widoku. Chciałbym być w stanie powrócić do obiektu podobnego do JSON (analizowany):Renderowanie widoku do zmiennej w ExpressJS (dla odpowiedzi AJAX)

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

Czy istnieje sposób to zrobić? Na razie mogę wrócić renderowany HTML tak:

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

Ale jak mogę przechowywać go w zmiennej powrotu wraz z większą ilością danych, bez konieczności zrobić więcej AJAX wywołuje?

Odpowiedz

21

W wyrazić można użyć app.render o oddzwonienie do renderowania widoku i uzyskać 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

wydaje się być to, czego szukasz! Ale czy istnieje sposób, aby to zrobić bez konieczności przekazywania całego parametru 'app'? Powyższy kod znajduje się w pliku routes.js i nie jestem pewien, w jaki sposób mogę użyć/przekazać 'app' tam ... –

+5

Możesz uzyskać instancję na swojej trasie poprzez res.app –

+0

Działa bezbłędnie! Dziękuję Ci bardzo! –

Powiązane problemy