backbone.js - Как модели / представления связаны с элементом DOM? - PullRequest
4 голосов
/ 17 марта 2011

Я просто играю с backbone.js и волшебством jQuery, чтобы подготовиться к будущим проектам.

В одном тестовом примере содержится таблица, строки которой отображаются в виде магистрали.Они прекрасно перерисовываются при изменении стоимости.После этого вся таблица сортируется с помощью плагина jQuery (сортировка анимированных таблиц), строки перемещаются на новые позиции.На самом деле, этот процесс работает один раз, но в следующий раз строки появляются дважды, все заканчивается хаосом.

Возможно ли, что связь между элементом DOM и представлением магистрали не может обработать такое изменение?Есть ли обходные пути?

Ответы [ 3 ]

3 голосов
/ 17 марта 2011

Когда вы разрабатываете с платформой Model / View, такой как backbone.js или knockout.js, я обнаружил, что вам нужно перестроить свое мышление и реализации, чтобы внести изменения в то, что отображается (например, сортировка) в модели и не позволять им происходить в представлении (как при использовании плагина jquery).

Если в конечном итоге вы используете скрипт на стороне вида для создания чего-то необычного (анимация - хороший пример), то вам нужно убедиться, что модель обновлена ​​правильно, отключив или расширив привязку.

Также обратите внимание, что согласно документации этот плагин анимированной сортировки удаляет строки таблицы из DOM, добавляет их в новые DIV, анимирует их, удаляет их из DIV и восстанавливает их в таблице. , Мне интересно, если после того, как все это будет сделано, магистраль потеряла отслеживание этих TD, и когда она перерисовывается после изменения, она просто добавляет новый набор, так как последний набор 'ушел'.

1 голос
/ 25 марта 2011

Спасибо за ваши ответы.Действительно, сортировщик таблиц делает много, что затрудняет поддержание привязки.Я переключился на замечательный плагин Quicksand , который использует скрытый список для анимации изменений в другом (видимом) списке.Подходит лучше для backbone.js.

0 голосов
/ 18 марта 2011

Ваша коллекция поддерживает порядок для ваших моделей и, следовательно, для ваших соответствующих просмотров. Если внешняя сила (например, плагин сортировки таблиц jQuery) изменяет порядок представлений, это изменение не отражается по сути в коллекции Backbone, поэтому вещи быстро не синхронизируются.

Кроме того, если сортировщик таблицы клонирует элементы и удаляет оригинал, Backbone, скорее всего, потеряет отслеживание представлений и в конечном итоге создаст их заново.

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