Как вы ссылаетесь на файлы JavaScript из плагина Grails в другом приложении Grails?

У меня есть собственный плагин, который поставляет несколько контроллеров Grails и несколько объектов домена Grails. Кроме того, есть несколько компонентов пользовательского интерфейса, написанных с использованием AnagularJS, которые я хотел бы использовать в нескольких других проектах. Следующие файлы в каталоге веб-приложения:

  • JS / директивы / directivea / directivea.js
  • JS / директивы / directivea / directivea.html
  • JS / услуги / restapi / restapi.js

В самом плагине у меня есть файл index.html & index.js, который я использую для запуска плагина в качестве автономного приложения. Мне не нужны функциональные возможности, предоставляемые GSP, все мои контроллеры предоставляют строго JSON ReST API, с которым связываются сервисы AngularJS.

В плагине, если я ссылаюсь на эти файлы в файле index.html, используя ссылку на их путь в каталоге веб-приложения (например, js / services / restapi / restapi.js), все работает просто отлично. Тем не мение; как только я вставляю плагин в один из моих последующих проектов, контроллеры и доменные объекты работают замечательно, но я не могу определить, как ссылаться на javascript из плагина.

Я открыт для перехода на использование GSP, а не статических HTML-файлов, что открывает возможности для использования плагина "Ресурсы", но я не могу заставить это работать...

Я создал файл PluginNameResources.groovy в папке плагина grails-app / conf с содержимым:

modules = {
    directivea {
        defaultBundle 'ui'

        resource url: 'js/directives/directivea/directivea.js'
        resource url: 'js/servicces/restapis.js'
    }
}

Это в index.gsp плагина:

<html ng-app="grailsPluginAApp">
<head lang="en">
    <meta charset="UTF-8">
    <title>Grails Plugin A</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script>
    <script src="js/index.js"></script>
    <r:require module="hierarchyviewer"/>
</head>
<body ng-controller="index">
    <div>
        <directiveA />
    </div>
</body>
</html>

web-app / js / index.jsp содержит:

var app = angular.module('grailsPluginAApp', ['RestAPIs','DirectiveAModuleName']);

Все это приводит к некоторым странным ошибкам JavaScript:

Uncaught object angular.js:36
(anonymous function) angular.js:36
(anonymous function)

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

1 ответ

Решение

Решением этой проблемы было размещение ссылки на угол в макете вместо вида. Grails делал некоторые неожиданные вещи для моего блока HEAD.

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