2015-06-23 147 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() { 

}); 

})