我正在使用ngCordova的cordova文件传输插件(更新到上一版本)来下载文件。我在android lolipop(lg g3)上运行应用程序
我一直在搜索我的代码和谷歌,但没有成功。
下载工作正常,但问题是进度功能变慢了。 为了更好地解释自己:在进度停止运行之前执行成功回调。
另外,我正在使用离子选项卡模板,在下载完成之前,它不会加载另一个选项卡(即使只有文本)。
我不确定,但我想$ timeout()应该在后台执行,看起来不是我的情况。这是我的代码,希望你能帮助我!
angular.module('starter.controllers', ['angular-svg-round-progress', 'ngCordova'])
.controller('SearchCtrl', function($scope, $http, $ionicLoading, $rootScope,$timeout, $cordovaFileTransfer, $ionicPlatform) {
$scope.download = function(id) {
$scope.hideDownload[id] = 1;
$ionicPlatform.ready(function() {
var url = "http://cdn.wall-pix.net/albums/art-space/00030109.jpg"
console.log('path: ' + cordova.file.applicationStorageDirectory);
var targetPath = cordova.file.applicationStorageDirectory + "testImage.png";
var trustHosts = true
var options = {};
$cordovaFileTransfer.download(url, targetPath, options, trustHosts)
.then(function(result) {
console.log('done');
console.log(result);
}, function(err) {
console.log('error');
console.log(err);
}, function (progress) {
$timeout(function () {
$scope.progress[id] = (progress.loaded / progress.total) * 100;
console.log(progress.loaded + ' / ' + progress.total);
})
});
});
}
})
PS:$ scope.progress [id]只更新一些文本
PS2:如果进度功能为空,那么我没有冻结,文件仍然可以很好地下载。但是如果我设置一个空的$ timeout()函数,那么它就会冻结。当然,在不使用$ timeout的情况下更新$ scope.progress [id]也会冻结。