小智 7
好的,这是一个更详细的答案,提供了我在第一个答案中提到的例子.我在github上有一个回购:
和一个在线github.io示例:
首先,我创建了一个ReportBuilderSvc,用于生成pdfMake.org使用的JSON格式的实际报告声明.此过程将特定于应用程序,因此我将其生成为单独的服务.您可以在pdfMake.org网站上查看我的示例代码并使用您自己的文档定义.完成报表设计后,将自己的文档定义JSON放在_generateReport方法中.
然后,我将pdfMake.org库包装在一个名为ReportSvc的免费角度服务中.这将调用ReportBuilderSvc的public generateReport()方法来获取reportDefinition JSON.我将生成报告的过程分解为$ q promise-wrapped内部方法,以允许服务发出客户端可用于更新UI的进度事件.在较旧/较慢的iPhone 4设备上,我看到报告过程需要30-45秒.这种更新UI的能力非常重要,否则应用程序看起来已经冻结了.
包装器将进程分解为:
在每一步,服务使用内部实用程序函数在$ rootScope上广播一个事件:
function showLoading(msg) {
$rootScope.$broadcast('ReportSvc::Progress', msg);
}
Run Code Online (Sandbox Code Playgroud)
这允许客户端在控制器中"订阅"或使用以下代码消费代码:
$scope.$on('ReportSvc::Progress', function(event, msg) {
_showLoading(msg);
});
Run Code Online (Sandbox Code Playgroud)
最后,为了显示pdf,我使用iframe并在浏览器中为在线演示设置src w /生成的dataURI.并且,我使用InAppBrowser和在设备或模拟器上运行时创建的本地文件.我计划将其清理一下,以便它可以作为库包含在内并作为角度服务注入.这将使客户自由地参加具有安全包裹的角/离子服务的报告声明.
任何想法都受到赞赏,因为我是节点,角度,离子世界的新手,并且绝对可以使用帮助......
| 归档时间: |
|
| 查看次数: |
12127 次 |
| 最近记录: |