Как использовать два приложения с одинаковым именем?

Мне нужно создать две области на моей странице с приложением AngularJS с таким же именем. Причина в том, что я использую тему Wordpress, которая не позволяет добавлять теги body. И я не могу создать div высокого уровня с угловыми атрибутами, потому что тема автоматически добавит закрывающий div.

Обе угловые области делают одно и то же.

Вот что я хочу:

<!-- lots of theme code here -->
 <div ng-app="app" ng-controller="ctrl">some angular variables and HTML</div>

<!-- lots of theme code here -->
 <div ng-app="app" ng-controller="ctrl">some angular variables and HTML</div>

Когда я делаю вышеизложенное, первый угловой прицел выполняется нормально, а второй, похоже, игнорируется. Я представляю, потому что два ng-приложения с одинаковыми именами на одной странице недопустимы.

В моем файле JS у меня есть только "app" и "ctrl". Есть ли другой способ сделать это?

Я мог бы создать два угловых приложения в файле js, но затем мне пришлось бы дублировать весь мой код... верно?

Не проще ли было бы просто добавить две вышеупомянутые директивы в тег body, используя javascript?

2 ответа

Вы должны использовать angular.bootsrap чтобы инициализировать ваше приложение на вашей странице, добавьте свой код внутри angular.element готовое событие, которое будет инициализировать ваше угловое приложение, когда DOM будет готов.

angular.element(document).ready(function() {
  //document inside angular.bootstrap could be replaced by any element selector,
  //wherever you want to inject your angular app
  angular.bootstrap(document, ['myApp']);
});

Я считаю, что использование вышеупомянутого подхода было бы лучше, спасибо.

Простое решение: просто добавьте ng-app и ng-controller в тег body динамически с помощью javascript. Сценарий должен находиться внизу страницы, чтобы DOM мог полностью загрузиться первым.

Другие вопросы по тегам