2013-03-10 3 views
2

В позвоночнике я часто создать экземпляр представления, используя что-то вроде ...Как остановить Backbone событие Пузырящийся

new mysite.some.namespace.View(); 

, который затем загружает на мой взгляд, и приложить события к DOM. Проблема заключается в том, чтобы удалить это представление, а затем создать его снова. Мои события часто удваиваются, если я дважды загружу представление. Как я могу это устранить? Это потому, что для моего el установлен элемент оболочки для приложения?

Что является простым решением для этого?

+0

Возможно ли, что вы инициализируете представление элемента в другом представлении? Следовательно, любые привязки, которые применяются как к родительскому виду, так и к subview, будут вызываться дважды ... – rudolph9

+1

Правильно ли вы вызываете '.remove()' в представлении (и не переопределяете его)? Он должен автоматически очищать свои события. – loganfsmyth

+0

@ rudolph9 Я действительно загружаю суб-представление в главном представлении, и оба они имеют одинаковые «эль». Я думаю, что это может быть проблемой. Я вообще не звоню .remove(), и если я это уничтожаю, мое приложение удаляет мастер-представление. –

ответ

0

Вы можете использовать e.stopImmediatePropagation();, чтобы предотвратить распространение события.

3

Из комментариев звучит так, будто вы отклонились от магистральной прямой и узкой дорожки в сорняки. Правильная обработка событий требует некоторой осторожности. Если вы размещаете больше кода, мы можем предоставить более детальные предложения, однако:

  • Убедитесь, что вы звоните .remove(), когда вы закончите с экземпляром вида. Все привязки событий DOM будут автоматически удалены.
  • Не делайте чудовищные вещи, такие как наличие двух экземпляров представления, ссылающихся на один и тот же элемент (this.el).
  • Сделай себе одолжение и не путайся с this.el. Не указывайте его. Используйте tagName в вашем extend объекте, если необходимо, но el вида должен быть A) уникальным для этого вида, а B) отделен от DOM, пока что-то внешнее к представлению не присоединяет его (обычно это маршрутизатор или составной диспетчер представлений).
Смежные вопросы