0

我有一个标准的 GSP,我正在尝试包含 scriptaculous ajax 搜索。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="layout" content="main" />
<title>Search</title>
<g:javascript library="scriptaculous" />
</head>
<body>
    <h2>Entry Search</h2>
    <input type="text" id="autocomplete" name="autocomplete_parameter" />
    <span id="indicator1" style="display: none"> <img
        src="/images/spinner.gif" alt="Working..." />
    </span>
    <div id="autocomplete_choices" class="autocomplete"></div>
    <script type="text/javascript">
    new Ajax.Autocompleter("autocomplete", "autocomplete_choices", "mySearch", {paramName: "value" indicator: 'indicator1'});
  </script>
</body>
</html>

我在尝试比较的数据库中有条目(我知道查找有效,因为我可以在地址栏中进行 ajax 搜索并返回)

因此,在页面上执行检查元素后,我注意到 scriptaculous 仍未包含在生成的页面中。scriptaculous JScript 脚本文件位于 web-app\js\prototype 目录下。我是否遗漏了导致 scriptaculous 不包含在内的任何内容,并且我的 Ajax.Autocompleter 抛出异常并且不包含在页面中?

4

1 回答 1

1

由于 jQuery 是 Grails 2 的标准 javascript 库,因此包含原型的“认可”方式是删除 jQuery 并安装原型插件

js/prototype通过将所有文件(prototype.js、scriptaculous.js、effects.js 等)放入并在文件中添加一个模块,我能够让它在不这样做的情况下工作conf/ApplicationResources.groovy

modules = {
  application {
    resource url:'js/application.js'
  }
  myCustomModuleName {
    resource url: [dir: "js/prototype", file: "prototype.js"], disposition: "head"
    resource url: [dir: "js/prototype", file: "scriptaculous.js"], disposition: "head"
  }
}

然后将其包含在您的 gsp 中

<r:require modules="myCustomModuleName" />

一旦我这样做并重新启动应用程序,我就可以使用 scriptaculous 摇动效果:

<div id="shakeMe">
  <a href="#" onclick="new Effect.Shake('shakeMe'); return false;">Shake!</a>
</div>

这使用 Grails 资源框架来包含 javascript 文件。

希望这对你有用!

于 2012-12-05T22:44:14.463 回答