Ich versuche, eine Gruppe von ziehbaren DOM-Objekten mit .draggable()
von jQuery UI zu erstellen, die durch Meteor-Abonnements gefüllt werden. Der Code, den ich mit Blicken wieWie jquery ui Verhalten in Meteor richtig zu binden?
Meteor.subscribe('those_absent', function() {
$("li.ui-draggable").draggable({ revert: "invalid" });
});
Meteor.subscribe('those_present', function() {
$("li.ui-draggable").draggable({ revert: "invalid" });
});
Diese entspricht mit einigen Meteor.publish()
Anrufen, so dass jedes Mal, wenn die Sammlung Änderungen, die .draggable()
Verhalten angebracht werden. Zumindest war das meine Absicht.
Allerdings funktioniert es nur einmal - sobald einer dieser <li>
Drag-and-Drop-Vorgänge ausgeführt wurde, sind sie nicht mehr ziehbar.
Wenn die Objekte fallen gelassen werden, ich bin Brennen ein benutzerdefiniertes Ereignis, das wie so zum Template
für das Element angebracht ist
$("#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' }});
}
};
So ist mein Denken, dass diese Änderung an der Sammlung auf Tropfen ausbreiten sollte durch den Pub/Sub-Prozess und führen Sie die .draggable()
Zeile oben. Aber es scheint nicht zu sein.
Der vollständige Code für das hier zu sehen ist https://github.com/sbeam/in-out/blob/master/client/inout.js und die App ist bei http://inout.meteor.com/ (es gibt einige andere wahrscheinlich nicht verwandten Fragen mit Gegenständen zufällig Werte oder verschwinden aus dem UI ganz zu verlieren)
Also, wenn mein Verständnis von Wie Pub/Sub arbeitet in Meteor ist aus, es wäre gut zu wissen. Oder gibt es eine effizientere Möglichkeit, diese Bindung für das UI-Verhalten zu erzielen, die ohne sie funktioniert?
mit ist http://stackoverflow.com/questions/10453291/how-to-trigger-jquery-draggable-on-elements-created-by -templates/10509361 # comment13641878_10509361 – lashleigh
Und seit kurzem http://stackoverflow.com/questions/10646570/how-to-handle-custom-jquery-events-in-meteor. Ich bin nicht überzeugt, dass es einen sauberen und richtigen Weg gibt, dies zu tun, aber viele Leute haben Hacks. – lashleigh
danke @lashleigh - um zusammenzufassen, müssen Sie ab sofort 'draggable()' oder irgendein anderes Verhalten bei MouseOver-Ereignissen anhängen, dh zum "letzten" möglichen Zeitpunkt. Ein sauberer und richtiger Weg, der auf Touchscreens funktioniert, wäre ein guter Bereich für aktive Forschung und Beiträge. – sbeam