0

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

  • js/directives/directivea/directivea.js
  • js/directives/directivea/directivea.html
  • js/服务/restapi/restapi.js

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

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

我应该补充一点,我已经研究了这个关于有人试图创建类似结构的问题,并且我试图用我已经拥有的相同结果来复制结果。

4

1 回答 1

0

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

于 2014-08-11T19:53:39.967 回答