javascript,继续在后台下载并限制一次下载

时间:2017-01-04 00:17:00

标签: javascript angularjs ionic-framework download

我正在使用Cordova文件传输插件开发一个Ionic App,将一组图像下载到设备中。目前它成功下载图像,我需要一次限制1个下载作业。以下是代码:

$scope.activeDownload = false;

// Download the current magazine
$scope.downloadMagazine = function() {
    if($rootScope.user.user_id == undefined) {
        $scope.showLoginAlert = function() {
                var alertPopup = $ionicPopup.alert({
                    title: 'Oops!',
                    template: "Your must login to download magazines"
                });
            };
        $scope.showLoginAlert();
        return;
    }

    document.addEventListener('deviceready', function () {

        var dirName = $rootScope.currentIssue.slug+'_VOL_'+$rootScope.currentIssue.vol+'_ISU_'+$rootScope.currentIssue.issue;

        // First create the directory
         $cordovaFile.createDir(cordova.file.dataDirectory, dirName, false)
        .then(function (success) {
            var count = 1;
            $scope.loadedCount = 0;

            $ionicLoading.show({template : "<progress max=\"100\" value=\"0\" id=\"dw-prog\"></progress><p> Downloading pages...</p><p>Please wait...</p>  <button ng-controller=\"magazineIssueCtrl\" ng-click=\"downloadBackground()\" class=\"button button-full button-positive\">Continue in Background</button>"});

            angular.forEach($scope.pages, function(value, key) {
               function wait() {
                   if($scope.proceed == false) {
                       window.setTimeout(wait,50);
                   }
                   else {
                        var imgName = count+".png";
                        $scope.saveImage(dirName,value.link,imgName); // Then save images one by one to the created directory.
                        count++;
                   }
               };
               wait();

            });

        }, function (error) {
            // Directory already exists means that the magazine is already downloaded.
            $scope.showDownloadedAlert = function() {
                var alertPopup = $ionicPopup.alert({
                    title: 'Why worry!',
                    template: "Your have already downloaded this magazine. You can view it on downloads"
                });
            };
            $scope.showDownloadedAlert();
        });

    }, false);
};

// Save a image file in a given directory
$scope.saveImage = function(dir,imgUrl,imageName) {

    $scope.proceed = false;
    var url = imgUrl;
    var targetPath = cordova.file.dataDirectory+ dir+"/" + imageName;
    var trustHosts = true;
    var options = {};

    // Download the image using cordovafiletransfer plugin
    $cordovaFileTransfer.download(url, targetPath, options, trustHosts)
    .then(function(result) {
        $scope.proceed = true;
        $scope.loadedCount ++;
        document.getElementById("dw-prog").value = ($scope.loadedCount / $scope.pages.length )*100;

        if($scope.loadedCount == $scope.pages.length) {
            $scope.activeDownload = false;
            $ionicLoading.hide();
            $scope.showDownloadSuccessAlert = function() {
                var alertPopup = $ionicPopup.alert({
                    title: 'Success!',
                    template: "Your magazine successfully downloaded. You can view it on Downloads!"
                });
            };
            $scope.showDownloadSuccessAlert();
        }
    }, function(err) {
        //alert(JSON.stringify(err));
    }, function (progress) {
    });
};

// Continue download in background
$scope.downloadBackground = function () {
    $scope.activeDownload = true;
    $ionicLoading.hide();
    $scope.showAlert = function() {
                var alertPopup = $ionicPopup.alert({
                    title: 'Sent to Background!',
                    template: "You can view it on downloads tab"
                });
            };
    $scope.showAlert();
    $rootScope.downloadInBackground.dirName = $rootScope.currentIssue.slug+'_VOL_'+$rootScope.currentIssue.vol+'_ISU_'+$rootScope.currentIssue.issue;
};

这里的一切都按预期发生,但是当下载发送到后台时我需要$scope.activeDownload变量为true,这样我才能在开始另一个下载作业之前引用该变量。但问题是变量似乎总是设置为false。你能帮我解决一下这个问题吗?

0 个答案:

没有答案