如何在不同的grails应用程序中从一个grails插件引用javascript文件?

How do you reference javascript files from a grails plugin within a different grails app?

本文关键字:grails 一个 插件 引用 文件 javascript 应用程序      更新时间:2023-09-26

我有一个自定义插件,它提供了几个Grails控制器和几个Grails域对象。此外,还有一些用AnagularJS编写的UI组件,我想在其他几个项目中使用。web-app目录下的以下文件:

  • js/指令/directivea/directivea.js
  • js/指令/directivea/directivea.html
  • js/服务/restapi restapi.js

在插件本身我有一个index.html &我不需要gsp提供的功能,我所有的控制器都提供了一个严格的JSON ReST api, AngularJS服务可以与之通信。

在插件中,如果我在index.html文件中引用这些文件,使用链接到它们在web-app目录中的路径(例如:js/services/restapi/restapi.js),一切工作正常。然而;一旦我把插件拉到我的下游项目之一,控制器和域对象工作得很好,但我似乎无法确定如何从插件中引用javascript。

我愿意切换到使用gsp而不是静态HTML文件,这为使用资源插件打开了大门,但我似乎也不能让它工作…

我已经创建了pluginnameresource文件。Groovy在插件的grails-app/conf文件夹中,内容为:

modules = {
    directivea {
        defaultBundle 'ui'
        resource url: 'js/directives/directivea/directivea.js'
        resource url: 'js/servicces/restapis.js'
    }
}

在索引中。插件的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/js/index . jsp包含:

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

所有这些都会导致一些奇怪的javascript错误:

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

我应该补充说,我已经调查了这个问题,关于有人试图创建一个类似的结构,我已经尝试用相同的结果来复制结果。

解决这个问题的方法是将angular的引用放在布局中而不是视图中。Grails对我的视图HEAD块做了一些意想不到的事情。