Sto cercando di creare un gruppo di oggetti DOM trascinabili utilizzando le interfacce utente di jQuery .draggable()
che vengono popolate tramite gli abbonamenti Meteor. Il codice mi si avvicinò con un look comecome associare correttamente i comportamenti ui jquery in meteora?
Meteor.subscribe('those_absent', function() {
$("li.ui-draggable").draggable({ revert: "invalid" });
});
Meteor.subscribe('those_present', function() {
$("li.ui-draggable").draggable({ revert: "invalid" });
});
questi corrispondono con alcune Meteor.publish()
chiamate, in modo che ogni volta che i cambiamenti di raccolta, verrà allegato il comportamento .draggable()
. Almeno, quella era la mia intenzione.
Tuttavia, funziona solo una volta - una volta che uno di questi <li>
è stato trascinato e rilasciato, quindi non sono più trascinabili.
Quando gli oggetti vengono eliminati, sto sparando un evento personalizzato che è collegato al Template
per la voce in questo modo
$("#c_absent .inner-drop").droppable({
drop: function(event, ui) {
ui.draggable.trigger('inout.leave');
}
});
Template.loftie_detail.events = {
'inout.leave': function (e) {
Lofties.update({_id:this._id}, {$set: {present: 'N' }});
}
};
Quindi, il mio pensiero è che questo cambiamento alla raccolta su goccia dovrebbe propagarsi attraverso il processo pub/sub e rieseguire la riga .draggable()
in alto. Ma non sembra.
Il codice completo per questo può essere visto qui https://github.com/sbeam/in-out/blob/master/client/inout.js e l'applicazione è dal vivo al http://inout.meteor.com/ (ci sono alcuni altri problemi probabilmente non imparentati con gli elementi in modo casuale perdere i valori che scompaiono o dall'interfaccia utente del tutto)
Quindi, se la mia comprensione della come funziona il pub/sub in Meteor, sarebbe bello saperlo. O c'è un modo più efficiente per raggiungere questo legame di comportamento dell'interfaccia utente che funziona senza di esso?
http://stackoverflow.com/questions/10453291/how-to-trigger-jquery-draggable-on-elements-created-by -templates/10509361 # comment13641878_10509361 – lashleigh
E più recentemente http://stackoverflow.com/questions/10646570/how-to-handle-custom-jquery-events-in-meteor. Non sono convinto che ci sia ancora un modo pulito e corretto per farlo, ma molte persone hanno degli hack. – lashleigh
grazie @lashleigh - quindi per riassumere, al momento, è necessario collegare 'draggable()' o qualsiasi altro comportamento sugli eventi mouseover, ad esempio, nell'ultimo "momento" possibile. Un modo pulito e corretto che funzioni sui touchscreen sarebbe una buona area per la ricerca attiva e il contributo. – sbeam