使用Backbone / Marionette视图生成PDF或HTML电子邮件楷模

时间:2013-06-03 11:27:33

标签: backbone.js pdf-generation html-email marionette backbone-views

一个非常常见的要求是将屏幕上显示的数据下载为PDF文件或“邮件朋友”功能,将数据通过电子邮件发送到用户指定的电子邮件地址。

我正在使用Backbone和Marionette,并希望从我的模型中获取数据,以电子邮件格式创建&作为PDF文件。实际上,我想通过电子邮件发送我的“视图”(或将其转储为pdf文件!)

问题: 是否可以重复使用屏幕模板将相同的项目呈现为电子邮件(和/或将其转储为PDF文件)?

我见过其他选项,比如jspdf.com,但是,使用它会意味着重新为电子邮件/ pdf创建另一种格式!?

我试图在下面汇总一个答案,但仍然在寻找能够让生活更轻松地创建PDF或HTML电子邮件的任何插件或库。

1 个答案:

答案 0 :(得分:1)

我找到的最简单的方法是创建新的或重新使用现有模板(如果合适)并使用模型从编译模板(下划线或手柄)生成html。使用现有视图的el来捕获dom元素并不是一个好主意,因为如果使用jQuery或其他框架,这些元素会附加其他类。

也可以使用多个模板并将结果附加到div中,以便以可通过电子邮件或可打印的格式生成完整的数据表示。

我在doucment的末尾创建了一个div,它通常是空的:

<button id="email-itinerary">Email Details</button>
............
............
............
    <div id="email-dialog">
    </div>

单击“电子邮件详细信息”按钮,此按钮的处理程序使用编译模板&amp;模型生成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生成的最佳解决方案。