web-dev-qa-db-fra.com

Obtenir une erreur Dropzone déjà attachée avec des directives angulaires

J'utilise le code suivant pour la zone de dépôt, mais j'obtiens une erreur. J'ai essayé de le déboguer, mais je ne parviens pas à résoudre cette action. Guide plz

http://jsfiddle.net/anam123/rL6Bh/

 -------------------> "Error: Dropzone already attached.

  throw new Error("Dropzone already attached.");" 

Code::

https://Gist.github.com/compact/8118670

extraits:

 /**
 * An AngularJS directive for Dropzone.js, http://www.dropzonejs.com/
 * 
 * Usage:
 * 
 * <div ng-app="app" ng-controller="SomeCtrl">
 *   <button dropzone="dropzoneConfig">
 *     Drag and drop files here or click to upload
 *   </button>
 * </div>
 */

angular.module('dropzone', []).directive('dropzone', function () {
  return function (scope, element, attrs) {
    var config, dropzone;

    config = scope[attrs.dropzone];

    // create a Dropzone for the element with the given options
    dropzone = new Dropzone(element[0], config.options);

    // bind the given event handlers
    _.each(config.eventHandlers, function (handler, event) {
      dropzone.on(event, handler);
    });
  };
});

angular.module('app', ['dropzone']);

angular.module('app').controller('SomeCtrl', function ($scope) {
  $scope.dropzoneConfig = {
    'options': { // passed into the Dropzone constructor
      'url': 'upload.php'
    },
    'eventHandlers': {
      'sending': function (file, xhr, formData) {
      },
      'success': function (file, response) {
      }
    }
  };
});
10
anam

Problème résolu en utilisant la configuration du code suivant.

Donc vous pouvez soit:

  1. Désactivez autoDiscover globalement comme ceci: Dropzone.autoDiscover = false; ou
  2. Désactivez autoDiscover pour des éléments spécifiques tels que This: Dropzone.options.myAwesomeDropzone = false;

Référence:
FAQ sur Dropzone

22
anam

Rien n'a fonctionné pour moi, alors je suis allé dans le fichier dropzone.js et j'ai changé la ligne qui génère une erreur (je pense que dans de nombreuses versions, c'est dans la ligne 426):

if (this.element.dropzone) {
    throw new Error("Dropzone already attached.");
  }

donc je remplace 

throw new Error("Dropzone already attached.");

avec 

return this.element.dropzone;

et ça marche

1
Farid Amiri
Dropzone.autoDiscover = false;
$('#bannerupload').dropzone({
    url: "/upload",
    maxFilesize: 100,
    paramName: "file",
    maxThumbnailFilesize: 5,
    init: function() {      
      this.on('success', function(file, json) {       
        jQuery("input#mediaid").val(json);
      });
    }
  });
1
ProgrammerCk

J'étais confronté au même problème "Dropzone déjà attaché" car nous avions activé l'objet myDropzone dans le script et que nous essayions de l'activer à nouveau.

Par exemple

if ($('#upl').attr('class')) {

var myDropzone = new Dropzone("#upl", {init: function () {

et encore essayer de l'activer

 if (jQuery('#password').attr('save_profile')) {
  var myDropzone = new Dropzone("#upl", {init: function () {

avec une autre action. 

S'il vous plaît vérifier votre code. 

0
Atul