Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Организация системы сообщений 
:(
    Опции темы
Alix
Дата 11.8.2008, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: нет
Всего: 23



Написан небольшой набор классов - контролов на js. В них реализована модель обработки сообщений - слушатель (observer). Т.е. у классов есть методы addEventListener, removeEventListener. Все хорошо в теории (ну и немного на практике). 

Но вот ситуация: пишется форма, в ней какой-нибудь контрол. На этот контрол подписываются несколько слушателей. Все это чудо писал программист А. Потом программеру Б поступил таск вставить еще один контрол, аналогичный по функционалу. Ну например, был список страниц (<<  <  1 2 ... 10 > >>) сверху, надо добавить его и вниз тоже. 

Программист это сделает, возможно даже догадается добавить слушателя на смену страниц по нажатию на ссылку, но есть проблема. На переключатель страниц на верху страницы могли быть подписаны еще слушатели о которых программист Б не знал и которых он не подпишет на прослушивание списка страниц в низу страницы. Это проблема. И вопрос в том, как можно ее разрулить?



--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
ksnk
Дата 11.8.2008, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Офигенное описание smile

Imho проблема в слишком тесной связи обработчиков событий с "реальным" механизмом их генерации и обработки в JS.
Ну, или в слишком навороченном уровне абстракции, требуемой от библиотеки. ;-)

в Турбо вижн (прадедушка почти всех Гуев), к примеру, используется примерно такая схема обработки событий. Любой контрол является источником списка событий с уникальными ID.
Новый обработчик событий вставляется в ОБЩУЮ очередь.
Новое событие прогоняется через всю эту очередь. 
Кто первый почистил сообщение - того и тапки. Если сообщение никто не чистит - оно броадкастное.
Схемы оптимизации просмотрщика событий о версии к версии TVision менялись. К примеру появились слушатели именно события с выделенным ID, ets...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
12345c
Дата 16.8.2008, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



ksnk, ответ тоже на уровне smile. Может, это надо в раздел профи, тут никто не поймёт, в чём проблема ? 


Alix, тут ведь список слушателей привязан к каждому контролу, а контролы не связаны между собой? Ответ очевиден, надо создать контрол, единый на страницу, в котором возможны 1 или более визуальных представлений. Самое простое - сделать ещё 1 дочерниий (в смысле зависимый от главного единственного экземпляра) класс контрола, который просто переводит все клики на главный экземпляр. И не забывать, что есть дочерний, а то ведь никто не мешает делать переходы на страницы и на главы, скажем, т.е. иметь 2 разных контрола на 1 странице.


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0752 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.