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

时间:2014-08-09 19:19:28

标签: javascript angularjs grails gsp grails-resources-plugin

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

  • JS​​ /指令/ directivea / directivea.js
  • JS​​ /指令/ directivea / directivea.html
  • JS​​ /服务/ RESTAPI / restapi.js

在插件本身中我有一个index.html&我用来将插件作为独立应用程序运行的index.js文件。我不需要GSP提供的功能,我的所有控制器都提供AngularJS服务与之通信的严格JSON ReST api。

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

我愿意转而使用GSP而不是静态HTML文件,这打开了使用Resources插件的大门,但我似乎无法让它工作......

我在插件的grails-app / conf文件夹中创建了PluginNameResources.groovy文件,其中包含以下内容:

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)

我应该补充一点,我已经调查了this question关于某人试图创建类似结构的问题,我试图用我已经拥有的相同结果复制结果。

1 个答案:

答案 0 :(得分:0)

对此的解决方案是将布局中的角度引用放置在视图中而不是视图中。 Grails在我的视图HEAD块中做了一些意想不到的事情。