Работа с событиями JavaScript, применимыми только для определенного контента - PullRequest
1 голос
/ 04 марта 2009

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

В зависимости от того, какую вкладку выбрал пользователь, я показываю разное содержимое внутри контейнера. Контент - это не просто текст, а различные функции и события javascript. Я использую Yahoo! Реализация TabView в UI Library, но способ решения этой проблемы, вероятно, будет применяться к другим подходам Tab.

То, о чем я думал, было в основном следующим:

Создайте отдельные модули для каждой вкладки (например, MYAPP.modules.tabCalendar и MYAPP.modules.tabJournal). Когда пользователь нажимает на другую вкладку (или переходит с помощью кнопок браузера в предыдущее состояние вкладки), я могу вызывать MYAPP.modules [oldModule] .disable () и MYAPP.modules [newModules] .enable (). Эти функции будут подписывать или отменять подписку на свои пользовательские события (например, общий обработчик кликов, прикрепленный к контейнеру).

Альтернативный подход к работе с событиями может заключаться в использовании единого глобального обработчика щелчков. Если щелчок находится внутри контейнера, определите, какая вкладка выбрана в данный момент, и отправьте событие щелчка в MYAPP.modules [currentTab] .onClick ().

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

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

Ответы [ 2 ]

1 голос
/ 04 марта 2009

Используйте события, уже встроенные в TabView, чтобы поставить JS в очередь, чтобы что-то делать.

http://developer.yahoo.com/yui/tabview/#handlingevents

При смене вкладок вам сообщат о предыдущих / следующих выбранных вкладках, таких, которых должно быть более чем достаточно для вашего JS, чтобы понять, что он должен делать. Если вы хотите написать слой перевода, который будет смотреть на события и делать что-то на его основе, это нормально, но это не является строго обязательным.

1 голос
/ 04 марта 2009

Я немного неясен с этой проблемой.

  1. Да, вы должны модулировать свой код.
  2. У каждого модуля установки обработчики событий для элементов в соответствующем контейнере.

Вот и все. YUI TabView обрабатывает переключение вкладок, поэтому вам не нужно ничего включать / отключать.

...