Я столкнулся с проблемой с шаблоном MVC в ExtJS 4. По крайней мере, я думаю, что у меня есть. Подходя к нескольким людям с этим вопросом и неоднократно выставляя на форумах Sencha, я теперь обращаюсь к более широкой аудитории в надежде получить либо лампочку, либо подтверждение.
Проблема
Ваше приложение имеет возможность открывать много разных видов, некоторые из которых сами являются мини-приложениями. Кроме того, пользователь может захотеть открыть несколько параллельных копий открытого вида.
Это приложение представляет собой одностраничное клиентское приложение Javascript.
Модель ExtJS 4 MVC предполагает, что вы определяете все свои контроллеры в своем классе Application. Эти контроллеры затем инициализируются, когда приложение загружается. Контроллеры отслеживают просмотры, модели и магазины.
Когда вы несколько раз инициализируете контроллер A, скажем, чтобы создать несколько копий представления, вы получаете два представления, которые ссылаются на одни и те же хранилища данных, и функционально отправляют повторяющиеся события на шину событий приложения.
Я обновил свое приложение, добавив новые методы прототипов к компоненту и контроллеру, чтобы разрешить как: а) субконтроллеры (некоторые из моих контроллеров стали довольно большими), и b) определение магазинов специально для представления, с которым они работают. Модели все еще могут быть определены на контроллере, просто для удобства использования обработчиками, если вам нужно сделать что-то вроде захвата записи с сервера.
Вопрос
Мое понимание MVC привело бы меня к мысли, что модели более непосредственно связаны с представлением, чем с контроллером. Я утверждаю, что ExtJS 4 решает приложить хранилища (которые, как я думаю, можно рассматривать как обертки к более классической модели), для контроллеров в целях поощрения повторного использования загруженных данных и для оптимизации от множества копий тот же класс создается. Мне кажется, однако, что это невозможно сделать, если вы намерены иметь много экземпляров представления, доступных пользователю. По моему мнению, наличие большого количества экземпляров является важным вариантом в OO-структуре, поэтому я отменил эту тенденцию и реализовал прототипы некоторых базовых классов Ext. (Спасибо Ext.implement!).
Есть ли способ иметь несколько параллельных экземпляров представления с различными данными, загруженными в них, используя классы из класса MVC и использование используемых сеттеров, геттеров и т.д.?