Динамически удаляем angular.module ()

0

Есть ли способ удалить угловой модуль ("SomeModule") динамически?

Это потому, что мне нужно загрузить и выгрузить модули со страницы в табу-контейнере.

Это основано на концепции Скотта Мосса о том, где каждый отдельный компонент рассматривается как отдельное приложение на Frontendmasters.com.

Я могу получить объект модуля

angular.module(name)

Который возвращает объект соответственно, но там я пропускаю четкий способ очистки ссылок на этот объект. Кто-нибудь еще решил что-то подобное?

Шаблон: http://plnkr.co/edit/8hK3lYjE7f06XtdHgNwL?p=preview

  • 0
    Вы говорите о отмене регистрации модуля? Зачем тебе это?
  • 0
    @EmileBergeron Да, это то, что я имею в виду. Это потому, что я следую парадигме, в которой компоненты рассматриваются как отдельные приложения. Когда пользователь уходит или удаляет представление (компонент), мне нужно выгрузить его из DOM. Но у пользователя есть возможность добавить его снова. Но добавив его, я получаю сообщение об ошибке, в которой модуль уже зарегистрирован. Это глупо, но с приложением из более чем 200 компонентов. Мне было интересно, могу ли я лучше управлять памятью, контролируя реестр
Показать ещё 5 комментариев
Теги:

1 ответ

2
Лучший ответ

Похоже, вы пытаетесь оптимизировать то, чего не существует.

Во-первых, не существует документального способа удаления модулей. Причины, по-видимому, рассматриваются в документах. Там вы найдете это выражение (внимание мое):

Модули могут быть загружены в любом порядке (или даже параллельно), потому что модули задерживают выполнение.

В этом предложении он не определяет, как долго задерживается, но позже мы получаем этот фрагмент (опять же, мой удар):

Поскольку модули ничего не делают во время загрузки, они могут быть загружены в виртуальную машину в любом порядке, и, таким образом, загрузчики скриптов могут воспользоваться этим свойством и распараллелить процесс загрузки.

Объединившись, это звучит так, как будто даже с несколькими из нескольких модулей вы не заметите нагрузку на свой сайт, потому что модуль будет загружаться только тогда, когда это необходимо, поэтому удаление модулей не является процессом, который когда-либо должен быть выполнен.

  • 0
    Загрузка компонента в контейнер вкладок, и если вы уйдете, чтобы загрузить другой компонент, не удалит первый компонент. Это факт. Так что он не делает это в DOM для вас. У меня очень занят контейнер вкладок из-за сложного дизайна пользовательского интерфейса. Это означает, что мне нужно лениво загружать и лениво разгрузить контент на контейнере вкладок и иметь возможность на любой другой странице и с тем, чтобы предыдущий контент был выгружен. Я нашел решение, отбросив «отдельные приложения» по шаблону, упомянутому выше, и просто $ уничтожая директивы. Спасибо за совет, хотя :)
  • 1
    Это больше похоже на проблему с компонентом табуляции, чем с Angular. Контроллеры должны быть уничтожены, когда они больше не используются, поэтому, если ваш компонент вкладок не продолжает «использовать» каждый контроллер, тогда это не должно быть проблемой. Хотя создание собственного процесса уничтожения всегда хорошая идея.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню