2017-03-07 2 views
0

Ich möchte meinen dropZone-Bereich zurücksetzen, indem ich auf Reset-Schaltfläche klicke, aber ich kann die resetDropzone-Funktion (in directivejs) nicht von meinem Controller aus aufrufen. Können Sie mir bitte meine directive.js helfen ist:

function dropZone() { 
console.log("access"); 
return { 
    restrict: 'C', 
    link: function (scope, element, attrs) { 

     var config = { 
      url: 'http://localhost:8080/upload', 
      maxFilesize: 100, 
      paramName: "uploadfile", 
      maxThumbnailFilesize: 10, 
      parallelUploads: 1, 
      autoProcessQueue: false 
     }; 

     var eventHandlers = { 
      'addedfile': function (file) { 

       scope.file = file; 
       if (this.files[1] != null) { 
        this.removeFile(this.files[0]); 
       } 
       scope.$apply(function() { 

        scope.fileAdded = true; 
       }); 
      }, 

      'success': function (file, response) { 
      } 

     }; 

     dropzone = new Dropzone(element[0], config); 

     angular.forEach(eventHandlers, function (handler, event) { 
      dropzone.on(event, handler); 
     }); 

     scope.processDropzone = function() { 
      dropzone.processQueue(); 
     }; 

     scope.resetDropzone = function() { 
      console.log("resetDropzon mthd"); 
      dropzone.removeAllFiles(); 
     }; 
    } 
} 

}

ich diese Funktion von HTML-Code aufrufen als ng-Klick = "reset()" und mein Controller ist:

$scope.reset = function() { 
    console.log("reset mthd"); 
    $scope.resetDropzone(); 
}; 
+1

wo '$ scope.reset' Funktion liegt? es scheint nicht Teil des Bereichs der Direktive zu sein. –

+0

'$ scope.reset' befindet sich in meinem Controller (MainCtrl.js). Wie kann ich es reparieren? Gibt es irgendetwas, dass ich es ändern sollte? –

Antwort

1

resetDropzone() befindet sich im isolierten Bereich Ihrer Anweisung. Sie können es nicht von Ihrem Controller-Bereich aus aufrufen.

Hier finden Sie ein Beispiel, wie Sie Ihr Szenario erreichen können. How to call a method defined in an AngularJS directive?

Binden Sie Ihre Anweisung an ein Objekt in Ihrem Controller-Bereich und definieren Sie die resetDropzone-Methode für dieses Objekt. Sie können es vom Controller aus aufrufen.