2013-08-05 31 views
9

Tôi muốn tải nội dung của một chế độ xem một phần (được viết bằng Ngọc) vào hộp thoại chế độ Bootstrap. Đối với điều này, tôi sử dụng một cuộc gọi AJAX. Tôi chỉ có thể trả lại HTML được tạo và tải nó vào phương thức, nhưng có thêm dữ liệu tôi cần để có được cùng với khung nhìn được hiển thị. Tôi muốn để có thể trả về một đối tượng như thế này (phân tích cú pháp để JSON):Hiển thị chế độ xem thành biến trong ExpressJS (đối với phản hồi AJAX)

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

Có cách nào để làm điều này? Để bây giờ tôi có thể trả lại HTML rendered như thế này:

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

Nhưng làm thế nào tôi có thể lưu trữ nó trong một biến trở lại cùng với nhiều dữ liệu hơn, mà không cần phải làm nhiều hơn nữa các cuộc gọi AJAX?

Trả lời

21

Trong thể hiện bạn có thể sử dụng app.render với một callback để render một cái nhìn và nhận được 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

Có vẻ là những gì tôi đang tìm kiếm! Nhưng có cách nào để làm điều đó mà không cần phải vượt qua toàn bộ tham số 'app'? Đoạn mã trên nằm trong tệp routes.js và tôi không biết cách sử dụng/vượt qua 'ứng dụng' ở đó ... –

+5

Bạn có thể lấy một phiên bản trong tuyến đường của mình thông qua res.app –

+0

Hoạt động hoàn hảo! Cảm ơn nhiều! –

Các vấn đề liên quan