2017-03-07 5 views
0

リセットボタンをクリックしてdropZone領域をリセットしたいのですが、コントローラからresetDropzone関数(directivejs内)を呼び出すことができません。

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(); 
     }; 
    } 
} 

}

NG-クリックすると、私は ")(リセット" = htmlコードからこの関数を呼び出すと、私のコントローラは、次のとおりです:

$scope.reset = function() { 
    console.log("reset mthd"); 
    $scope.resetDropzone(); 
}; 
あなたは私くださいマイdirective.jsは助けることができます
+1

'$ scope.reset'関数はどこにありますか?それはディレクティブ共有スコープの一部ではないようです。 –

+0

'$ scope.reset'は私のコントローラ(MainCtrl.js)にあります。どうすれば修正できますか?私はそれを変えなければならないことはありますか? –

答えて

1

resetDropzone()は、ディレクティブの独立したスコープ内にあります。コントローラスコープから呼び出すことはできません。

ここでは、シナリオをどのように達成するかの例を見つけることができます。 How to call a method defined in an AngularJS directive?

コントローラスコープ内のオブジェクトにディレクティブをバインドし、このオブジェクトに対してresetDropzoneメソッドを定義します。あなたはコントローラからそれを呼び出すことができます。

関連する問題