Ответ 1
Я считаю, что вы можете просто запросить AngularJS и ваше приложение и использовать крючки для обеспечения необходимого HTML. Несколько замечаний:
- Поскольку URL-адрес не может быть изменен, вы должны использовать маршрутизатор в устаревшем режиме (используя хеш URL-адреса) вместо режима HTML5.
-
Поскольку вы работаете в сгенерированном URL-адресе,
templateURL
должен быть создан динамически. Например, выполните тег script для URL-адреса вашей папки плагина:<script>var MY_PLUGIN_BASE = '<?php echo plugins_url(); ?>'</script>
И затем определите свой маршрут и
templateURL
с помощью этой константы:$routeProvider .when('/', { templateUrl: MY_PLUGIN_BASE+'my-plugin/views/main.html', controller: 'Main' })
Это работает, но в целом я избегу использовать маршруты в таких ситуациях. Это приводит к большей работе в контроллерах и директивах, но это безопаснее, потому что на странице могут быть другие MVC-приложения на стороне клиента.
-
ng-app
прикрепляется к корневому элементу вашего представления вместоbody
.
Для более общего встроенного приложения AngularJS (по моему опыту: букмарклет) вам необходимо:
- Inject AngularJS, если необходимо (проверьте
window.angular
), CSS и HTML. -
Внедрите JS файл приложения. Поскольку только один
ng-app
будет автоматически загружаться, загрузите свое приложение вручную, используяangular.bootstrap
angular.bootstrap(document.getElementById('my-app'), ['MyApp'])
-
Используйте абсолютный URL для
templateURL
и убедитесь, что у этого URL есть CORS. - Опять же, избегайте использования маршрутов, если это возможно. Для плагина Wordpress мы уверены, что нет другого приложения, использующего хэш для маршрутизации (Wordpress использует Backbone, но я не вижу маршрутов), но в целом на странице, которая обрабатывает маршрутизацию, уже есть приложение MVC.