Фон
У меня есть N angular модулей. Одним из них является корневой контейнер, который загружается и существует весь жизненный цикл страницы. Все остальные N-1 - это игры, вложенные внутри страницы, и их необходимо загружать динамически и разгружать (как разгружать модули angularjs).
.------------------.
|Container |
| .----------. |
| |Game | |
| | | |
| | | |
| `----------` |
`------------------`
Подробнее
Каждая игра - это тот же способ angular -модуль, который имеет в качестве основного контейнера зависимости выполнение некоторого взаимодействия с API.
Пример
После некоторых экспериментов я обнаружил, что в Angularjs 1.1.5 вложенные модули почти (!) работают правильно: http://plnkr.co/edit/kJao7o
Но с новым словом Angularjs (1.2.0-rc2): http://plnkr.co/edit/ZyhbRu
Почему почти?
В этом примере все еще возникает исключение:
Ошибка: аргумент 'GameCtrl' не является функцией, получил undefined
Я попытался использовать ng-include для предотвращения автоматической инъекции из AngularJS. Но все равно такая же проблема (http://plnkr.co/edit/EM1MbB);
Что не так?
Я знаю, что невозможно использовать вложенное ng-приложение на той же странице http://docs.angularjs.org/api/ng.directive:ngApp
Как?
Но как можно использовать более одного вложенного модуля angular на одной странице (с собственными контроллерами)?
Ошибка?
И я не знаю, просто ли это временная ошибка или команда angular решила избежать вложенных модулей. Кто-нибудь знает об этом?
Плохая идея?
Или, если использование модулей для такой проблемы - плохая идея - для чего это лучшее решение?
Причина использования модулей в этом приложении
- Изоляция области имени (во избежание столкновения имен). Я могу гарантировать, что любая из двух или более будущих игр не будет использовать одни и те же имена ctrls или что-то еще:
- Переход к выгрузке модулей (я не знаю, возможно ли это в AngularJs - но я попытаюсь);