我发现的最简单的方法是创建新模板或重新使用现有模板(如果合适)并使用模型从已编译的模板(下划线或把手)生成 html。使用现有视图的 el 来捕获 dom 元素并不是一个好主意,因为如果使用 jQuery 或其他框架,这些元素会附加额外的类。
也可以使用多个模板并将结果附加到一个 div 中,以便可以通过电子邮件或可打印格式生成完整的数据表示。
我在文档末尾创建了一个 div,它通常是空的:
<button id="email-itinerary">Email Details</button>
............
............
............
<div id="email-dialog">
</div>
单击“电子邮件详细信息”按钮时,此按钮的处理程序使用已编译的模板和模型来生成 html。
var result = "<table border=\"1\">" +
"<tr>" +
//add table headers here
"</tr>";
var compile = Handlebars.compile($("#email-template").html().trim());
for(var i=0;i<collection.length;i++) {
result += compile(collection.at(i).toJSON()); //generates <tr>
}
result += "</table>"; //finish table.
//use more templates to add other data, and append to result variable.
//Finally add the html to div
$("#email-dialog").empty();
$("#email-dialog").append($.parseHTML(result));
$("#email-dialog").dialog({
title: "Hotels - at a glance",
modal: true,
height: 550,
width: 1000,
});
PDF:我仍在寻找生成 PDF 的最佳解决方案。