Jquery Déplaçable Backbone.js l'obtention de référence à l'épine dorsale du modèle à partir de l'intérieur de la droppable succès de rappel
J'ai une épine dorsale modèle de vue que je me suis rendu ici, et de le rendre déplaçable avec jquery ui.
render: ->
$(this.el).attr('class', 'item').html(this.template(this.options.model.toJSON() ))
viewmodel = this
$(this.el).draggable
revert: true
drag: () ->
console.log(viewmodel)
Ci-dessus, j'ai viewmodel disponible et pouvez la supprimer de la dom, l'appel de méthodes sur son modèle, etc. Mais ce que je veux, c'est faire glisser ce modèle de vue dans un drop, contenant, comme une poubelle, et ensuite appeler un peu de la vue du modèle, de méthodes et de le retirer de la DOM.
Ce que je vois, cependant, est la méthode de rappel pour lorsqu'un objet est tombé dans un conteneur serait:
$(function() {
$("#trash").droppable({
drop: function(event, ui) {
console.log(ui.draggable);
}
});
});
Donc, je suis en mesure de voir l'interface utilisateur.déplaçable et retirez-le du DOM, mais je n'ai pas de référence à son modèle de vue. Suis-je en train de faire quelque chose de mal? Aucun moyen de contourner cela?
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème. Je l'ai résolu comme ceci: Donner de la cible de dépôt d'une référence à la collection modèle. Définir une propriété
data-cid="<%= cid %>"
sur le déplaçable. Maintenant, vous pouvez regarder le modèle dans la collection de la$(ui.draggable).data('cid')
. Depuis épine dorsale affirme que les Cid sont uniques, vous pouvez même numériser une collection de collections, dans le cas où il y avait plusieurs classes de modèles vous voulez être trashable.Je pense que je suis tombé sur le même problème; au lieu d'ajouter des méta-données de l'élément ou de le stocker à l'échelle mondiale, j'ai juste conservé une référence à la réalité de la vue elle-même sur l'élément DOM, qui vous donne accès au modèle, et toutes les infos dont vous avez besoin à partir de là.
L'approche que j'utilise est de transmettre l'événement de la droppable à la déplaçable par le biais d'un événement personnalisé.
Cela vous permet d'exécuter la baisse de gestionnaire dans le cadre de l'traîné point de vue, qui est souvent plus utile que de l'exécuter dans le contexte de la droppable vue.
DroppableView
instance comme un arguement dedrop:dropview
, etdropviewDropHandler
auront accès à deuxDroppableView
et DraggableView instances.Nous avons résolu ce problème avec une propriété globale qui est placé dans l'application-noms, appelé le faisant glisser.
Comme il n'y a qu'une seule vue glissé à un moment, le faisant glisser la vue se lie à l'événement glisser et écrit son propre modèle dans la fenêtre.faisant glisser.
Quand il fait tomber sur un drop point de vue, que la vue devient l'actuel glisser-modèle par le biais de glisser variable.
btw cette propriété peut être mieux placé au sein de la global accessible de l'application de l'espace de noms au lieu de directement de l'ajouter à la fenêtre. C'était d'Application.Vue.dans notre application.
Comme ceci: