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