2012-01-17 30 views
5

używam domyślnego przeciągnij i upuść wewnątrz aplikacji szkieletowej słucham zdarzenie moim zdaniem tak:Backbone proste użycie przeciągnij i upuść

"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", 

ze skojarzoną metodą

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

i związany html

<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="" /> 

Wszystkie moje zdarzenia działają poprawnie, ale nie powodują upuszczenia. Moje pytanie brzmi: jak to działa?

+0

Co można zyskać poprzez zintegrowanie tego z Backbone vs ustawiania wywołania zwrotne w obiekcie inicjalizacji? W moich aplikacjach Backbone mam tendencję do ustawiania takich rzeczy jak drag-drop w metodzie inicjowania lub renderowania i nie używam dla nich skrótu 'events'. Czy lepiej jest integrować w celu zbierania śmieci lub czegoś innego? –

+0

czy używałeś bibliotek JI biblioteki JQuery do przeciągania i upuszczania? –

+0

Nie w tej chwili, ale myślę o – Awea

Odpowiedz

2

Napraw za pomocą bibliotek JQuery UI zamiast przeciągania i upuszczania HTML5.

kładę to w moim renderowania metodą:

$('#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

Po szybkim przejrzeniu wygląda na to, że brakuje ci przecinka po "objectHover".

+0

Przepraszam, źle skopiować i wkleić – Awea