Я пишу довольно сложное приложение JavaScript, которое имеет MVC-архитектуру, которую я реализую, используя Prototype Class
и модуль шаблон. Приложение использует AJAX и шаблон Observer. Я создаю свой экземпляр контроллера, когда DOM загрузил, передал ему представление и некоторые модели, созданные из данных JSON, и прочь.
Однако я обнаружил, что должен установить свой экземпляр контроллера как свойство в объекте Window
— i.e. объявите его, не используя var
&mdash, потому что у меня есть обратный вызов AJAX, который обновляет объект представления, принадлежащий контроллеру, и на этом этапе кода мой милый маленький мир MVC не находится в области видимости.
Я исследовал передачу в объекте представления в качестве параметра функции, содержащей код AJAX, но это стало действительно беспорядочным и привело бы к некоторым ужасным нарушениям шаблона MVC, таким как объединение модели и представления. Это было ужасно.
Делает ли что-то вроде хранения экземпляра моего контроллера непосредственно на Window
считается плохой формой? Это немного пахнет, как использование глобальной переменной для меня, но я не вижу никакого способа обойти ее.