2016-07-18 18 views
0

Ich habe einen Code, der Dokumente in den Controller hochlädt, ich wollte es zu einem Dienst verschoben werden, so dass andere Controller es verbrauchen können.Angular.js Consuming Upload.progress Ereignis in einem Controller

"use strict"; 
angular.module('myApp') 
.service('uploadDocumentService', ['Upload', function (Upload) { 
    this.UploadDocument = function ($file, data) { 

     Upload.upload({ 
      url: '/uploadDocuments', 
      file: $file, 
      data: data 
     }).progress(function (evt) { 
      var progressReport = {}; 
      progressReport.progressVisible = true; 
      progressReport.percentage = Math.round(evt.loaded/evt.total * 100); 
      return progressReport; 
     }).success(function (data, status, headers, config) { 
      var fileUploaded = {}; 
      fileUploaded.id = data.id; 
      fileUploaded.name = data.fileName; 
      return fileUploaded; 
     }); 
    } 

}]); 

Ich bin nicht in der Lage, die .progress Ereignis in meinem Controller zu erfassen

uploadDocumentService.UploadDocument($file, 'Path') 
       .progress(function (progressReport) { 
        //Some code 
       }).success(function (data) { 
        //Some code 

      }); 

Halten Sie den Fehler bekommen kann nicht Eigentum ‚Fortschritt‘ undefinierter bei m. $ Scope.uploadDocuments Irgendwelche Tipps lesen Wie kann ich dieses Problem lösen? Muss ich das Fortschrittsereignis im Service registrieren?

+0

Bitte bestätigen Sie, ob Ihr Controller Den Dienst haben - uploadDocumentService..angular.module ('myApp'). controller ("MyCtrl", Funktion ($ scope, uploadDocumentService) –

+0

Ich denke uploadDocumentService param fehlt in Ihrem Controller fu nction, die diesen undefinierten Fehler verursacht .. Hoffe, das funktioniert für Sie :) –

+0

Hallo, ja, tut es. –

Antwort

0

Um das erwartete Ergebnis zu erzielen, fügen Sie uploadDocumentService param in Ihre Controller-Funktion ein.

angular.module('myApp').controller("controller", function($scope, uploadDocumentService) 
+0

@Rahul Ganguly, wenn meine Antwort Ihrer Frage geholfen hat, stimmen Sie bitte oder markieren Sie es als beantwortet :) –

+0

Dies ist in meinem Controller, –

+0

@RahulGanguly, bitte teilen Sie Ihren Controller-Code auch –

0

Controller-Code

"use strict"; 
angular.module('myApp') 
.controller('controller', ['$scope', '$http', 'Upload', 'uploadDocumentService', function ($scope, $http, Upload, uploadDocumentService) { 
$scope.uploadDocuments = function ($files) { 
     $scope.progressVisible = false; 
     for (var i = 0; i < $files.length; i++) { 
      var $file = $files[i]; 
      uploadDocumentService.UploadDocument($file, 'path') 
       .progress(function (evt) { 
        $scope.progressVisible = true; 
        $scope.percentage = Math.round(evt.loaded/evt.total * 100); 

       }).success(function (data) { 
       var fileUploaded = {}; 
       fileUploaded.id = data.id; 
       fileUploaded.name = data.fileName; 
       $scope.filesUploaded.push(fileUploaded); 
       $scope.isFileUploaded = true;     

      }); 
}]); 
0

Ein Kollege wies den Fehler aus, ist das Update wie unten, Rückkehr wurde in der Erklärung Upload.upload fehlt

"use strict"; 
angular.module('myApp') 
.service('uploadDocumentService', ['Upload', function (Upload) { 
    this.UploadDocument = function ($file, data) { 
     return Upload.upload({ 
      url: '/uploadDocuments', 
      file: $file, 
      data: data 
     }).progress(function (evt) { 

     }).success(function (data, status, headers, config) { 
     }); 
    } 

}]);