2015-06-23 114 views
-1

如何使用承诺触发负载法的下载在此服务成功完成后的?如何使用AngularJS承诺

.service('pdfService', function(){ 
    var lastUrl; 
    var lastFileName 
    return { 
     createPdf(url, fileName){ 
      //do processing 
      lastUrl = url; 
      lastFileName = fileName 
     }, 
     loadLastPdf(){ 
     //use lastUrl and lastFileName 
     } 
    } 
} 

,并在控制器:

.controller('SomeCtrl', function(pdfService) { 
    pdfService.createPdf('http://example.com', 'file.pdf'); 
    // or pdfService.loadLastPdf(); 
} 

我尝试downloadPdf方法内,但没有得到答复。

filetransfer.download(
... 
).then(function(){ 
    this.load(lastFileName) 
}); 

我正在使用Cordova文件传输。

+0

在'pdfService'看起来语法不正确 –

+0

问题真的很难用给定的代码示例来理解代码...究竟哪里下载呢? “这个”指向匿名函数的范围......我只能推荐阅读的承诺API的官方文档:https://docs.angularjs.org/api/ng/service/$q – TekTimmy

+0

这里是我的完整尝试,作为新手角度的世界,这是一个离子应用程序:http://plnkr.co/edit/ASB7LSCuCRvVLGI3Kqxf?p=preview我正在寻找promisses教程 –

回答

0

这段代码可以帮助我很多:

controller('MyCtrl', function($scope, $q) { 

    function longOperation() { 
    var q = $q.defer(); 

    somethingLong(function() { 
     q.resolve(); 
    });  

    return q.promise; 
    } 

    Then you can call it: 

    longOperation().then(function() { 

}); 

})