Использование jQuery UI drag / drop с backbone.js - PullRequest
10 голосов
/ 23 февраля 2012

Одна особенность моего приложения Backbone включает в себя связывание моделей типа A с моделями типа B, что осуществляется путем перетаскивания представления A на представление B. В классе представления B я прослушиваю событие drop и из этого я получаю элемент DOM зрения A, но нет информации о модели A.

Каков наилучший способ получения этой информации? Мои лучшие догадки до сих пор:

  • у модели A сохраните ссылку на себя в пространстве имен приложения, удалив эту ссылку в конце перетаскивания, если обработчик удаления еще не сделал этого
  • инициирует событие в представлении A, передавая ссылку на модель B вместе с событием, а затем вызывая модель A, вызывает метод модели B ...
  • сохранить модель A как атрибут представления $ .data A

но все эти подходы кажутся запутанными / неэлегансными.

Ответы [ 2 ]

4 голосов
/ 01 апреля 2012

Хранение в качестве атрибута данных на самом деле довольно чисто, и производительность не будет плохой. Вы можете сохранить атрибут cid модели как data-cid в DOM el и использовать метод коллекции getByCid для получения модели.

0 голосов
/ 23 февраля 2012

Я думаю, что самый чистый способ сделать это - упомянуть в комментарии кинакуту, чтобы связать элемент dom с моделью, используя идентификатор, например, в. атрибут данных .

Это имеет смысл с точки зрения реализации, поскольку позволяет вам иметь двунаправленную зависимость, и вы можете легко ссылаться друг на друга позже, когда ваше приложение станет более сложным.

Ваши упомянутые решения также будут работать, но я чувствую, что Решение A выглядит немного хакерским, Решение B менее чистым в коде, а Решение C, по сути, такое же, как использование атрибута данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...