Это дополнительный вопрос к Является ли публикация / подписка на события после рендеринга пользовательского интерфейса лучшей практикой независимо от фреймворка? , которую я задал в прошлом месяце, когда мы впервые пошли по пути pub / sub с Приложение Javascript / ExtJS. Если вы хотите понять суть моего вопроса с точки зрения чисто публикации и подписки, см. Первое подчеркнутое предложение следующего за последним абзацем. Сначала немного контекста:
У нас есть панель, содержащая панель вкладок, карты которой содержат панель сетки, и панель, которая содержит форму для фильтрации данных сетки. В событии beforechangetab мы добавляем / удаляем сетку общего доступа и публикуем сообщение GRID_TAB_TOGGLED вместе с флагом, указывающим на наличие или отсутствие на складе, и затем сетка перезагружается с соответствующими данными.
Что касается фильтров, то код, который я унаследовал, основывался только на одной форме, и варианты комбинированного списка модифицируются на основе загруженных заполненных / отсутствующих данных, но теперь мы должны сохранить все из состояние фильтра. Моя первоначальная идея состоит в том, чтобы использовать макет карты для хранения заполненных или незаполненных фильтров и переключения между ними в ответ на одно и то же сообщение GRID_TAB_TOGGLED.
Проблема заключается в том, что обе эти формы фильтра должны прослушивать другие многочисленные идентичные события. Я думаю, что определил решение и ищу подтверждение проекта.
Моя идея состоит в том, чтобы различные формы могли определять, являются ли они «активными» (заполненными или не запасенными) фильтрами, и, если они активны, подписаться на все необходимые сообщения, но если они не активны, отписаться от них всех. Эта отмена подписки, повторная подписка будет происходить всякий раз, когда было получено сообщение GRID_TAB_TOGGLE.
Похоже ли это на разумный дизайн с точки зрения ExtJS, но более интересный для меня (так как у меня почти 3 года опыта работы с ExtJS, но только 1,5 месяца я внедряю свою собственную систему на основе pub / sub), из публикации / подписаться парадигмы точки зрения? Возможно, это даже шаблон (или, я надеюсь, нет) шаблон для систем, основанных на пабах / подабах?