2012-01-17 14 views
5

Sto usando il drag and drop di default all'interno di un'applicazione dorsale sto ascoltando evento a mio avviso, in questo modo:Backbone uso semplice drag and drop

"drop img.big-objet": "dragDropEvent", 
"dragenter img.objet": "dragEnterLeaveEvent", 
"dragleave img.big-objet": "dragEnterLeaveEvent", 
"mousedown img.big-objet": "dragStartEvent", 
"mouseup img.big-objet": "dragStopEvent", 
"dragend img.big-objet": "dragStopEvent", 

Con il metodo associato

dragEnterLeaveEvent: function (event){ 
    object = $(event.target); 
    object.addClass('hidden'); 
    $('#'+object.attr('data-toggle')).removeClass('hidden'); 
}, 

dragStartEvent: function (event) { 
     object = $(event.target); 
     object.addClass('objet-drag').removeClass('objet-hover'); 
    }, 

    dragStopEvent: function (event) { 
     object = $(event.target); 
     object.addClass('objet-hover').removeClass('objet-drag'); 
    }, 

objectHover: function(event){ 
    object = $(event.target); 
     object.addClass('hidden'); 
    $('#'+object.attr('data-toggle')).removeClass('hidden'); 
}, 

dragDropEvent: function(event){ 
    alert('banana'); 
} 

E l'html associato

<img class="objet" id="small-objet01-level01" data-toggle="big-objet01-level01" src="img/content/small-objet01-level01.png" alt="" /> 
<img class="objet" id="small-objet02-level01" data-toggle="big-objet02-level01" src="img/content/small-objet02-level01.png" alt="" /> 
<img class="objet" id="small-objet03-level01" data-toggle="big-objet03-level01" src="img/content/small-objet03-level01.png" alt="" /> 
<img class="big-objet objet-hover hidden" id="big-objet01-level01" draggable="true" data-toggle="small-objet01-level01" src="img/content/big-objet01-level01.png" alt="" /> 
<img class="big-objet objet-hover hidden" id="big-objet02-level01" draggable="true" data-toggle="small-objet02-level01" src="img/content/big-objet02-level01.png" alt="" /> 
<img class="big-objet objet-hover hidden" id="big-objet03-level01" draggable="true" data-toggle="small-objet03-level01" src="img/content/big-objet03-level01.png" alt="" /> 

Tutti i miei eventi funzionano correttamente ma non l'evento di rilascio. Quindi la mia domanda è come farlo funzionare?

+0

Che cosa si guadagna integrando questo con Backbone vs impostando i callback nell'oggetto di inizializzazione? Nelle mie applicazioni Backbone tendo ad impostare cose come il drag-drop nel metodo di inizializzazione o di rendering e non utilizzo l'hash 'eventi' per loro. È meglio integrare per scopi di garbage collection o qualcos'altro? –

+0

hai usato librerie UI jquery per essere trascinabili e trascinabili? –

+0

Non in questo momento, ma sto pensando a – Awea

risposta

2

Correggere utilizzando librerie UI JQuery anziché trascinamento HTML5.

ho messo nel mio metodo render:

$('#overlay-objet img').droppable({ 
    tolerance: 'pointer', 
    drop: _.bind(function(event, ui) { 
     object = $(event.target); 
     if (object.attr("data-val") != undefined){ 
     objectDrag = object.attr('data-val').toString(); 
     objectDrop = $(ui.draggable).attr('data-val').toString(); 
     object.addClass('hidden'); 
     $('#'+object.attr('data-toggle')).removeClass('hidden'); 
     this.dragDropEvent(objectDrag + objectDrop); 
     } 
    }, this), 
    over: _.bind(function(event,ui){ 
     object = $(event.target); 
     object.addClass('hidden'); 
     $('#'+object.attr('data-toggle')).removeClass('hidden'); 
    }, this), 
    out: _.bind(function(event,ui){ 
     object = $(event.target); 
     object.removeClass('hidden'); 
     $('#'+object.attr('data-toggle')).addClass('hidden'); 
    }, this) // Edit mercredi soir ajouter ,this dans chaque callback 
    }); 

$('img.big-objet').draggable({ 
    helper: "clone" 
}); 
0

Basta guardarlo rapidamente sembra che manchi la virgola dopo "objectHover".

+0

scusate copia e incolla errate – Awea