2014-06-09 9 views
10

Sto usando seguente codice per zona di caduta, ma sto errore ottenendo, ho cercato di eseguire il debug, ma io non sono in grado di risolvere questa azione guida plzOttenere Dropzone errore già attaccato alle direttive angolari

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

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

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

Code ::

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

snippts:

/** 
* 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) { 
     } 
    } 
    }; 
}); 
+0

Dropzone.instances hanno dropzone attatched istanze. Puoi controllarli – uddhab

risposta

22

Problema risolto utilizzando la seguente configurazione del codice.

Quindi è possibile:

  1. Spegnere individuazione automatica a livello globale in questo modo: Dropzone.autoDiscover = false;, o
  2. Spegnere individuazione automatica per elementi specifici come questo: Dropzone.options.myAwesomeDropzone = false;

Riferimento:
FAQ on dropzone

+5

Sto affrontando lo stesso problema ... Ho provato 'Dropzone.autoDiscover = false;' e anche l'altra opzione ... ma sto ricevendo lo stesso errore – Umair

+1

Alla fine ho rinunciato. Ho appena commentato la funzione in dropzone.js 'Dropzone._autoDiscoverFunction = function() { if (Dropzone.autoDiscover) { return Dropzone.discover(); } }; ' – David

+0

questa dovrebbe essere la risposta corretta. ho affrontato un problema simile e ho inserito questa funzione prima che ogni istanza di dropzone lo risolvesse. –

0

Stavo affrontando lo stesso numero "Dropzone già collegato" perché abbiamo abilitato l'oggetto myDropzone nello script e stavamo provando ad abilitarlo di nuovo.

Ad esempio

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

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

e ancora cercando di consentirle

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

con un'altra azione.

Controllare il codice.

1
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

Non sono sicuro del motivo per cui è stato rifiutato, ha funzionato per me. Dropzone.autoDiscover = false; era tutto ciò che era necessario prima del resto del codice. – Mike

+0

di questo funziona, l'ho provato e l'ho impiantato io stesso – ProgrammerCk

+0

@ProgrammerCk - Sì, chi potrebbe dubitare di qualcuno con 16 reputazione e impropria capitalizzazione e punteggiatura? – naspinski

-1

Metti il ​​tuo codice di creare dropzone all'interno di un blocco try/catch

try{ 
$('.dropzone').dropzone({ 
    url: '/upload' 
    }); 
} 
catch(error){ 
    console.log("Catching " + error); 
} 
+0

Questo è solo nascondere il problema non aggiustarlo ... –

1

Niente ha funzionato per me, così sono andato al file dropzone.js e modificare la riga che genera un errore (credo in molte versioni è in linea 426):

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

così sostituisco

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

con

return this.element.dropzone; 

e si sta lavorando

Problemi correlati