0

スクリプト化されたajax検索を含めようとしている標準のGSPがあります。

<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 ライブラリであるため、prototype を含める「承認された」方法は、jQuery を削除し、prototype プラグインをインストールすることです。

すべてのファイル (prototype.js、scriptaculous.js、effects.js など) を入れて、ファイルjs/prototypeにモジュールを追加することで、それを行わなくても動作させることができました。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 Shake エフェクトを使用できるようになりました。

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

これは、Grails Resource フレームワークを使用して JavaScript ファイルを組み込みます。

うまくいけば、これでうまくいきます!

于 2012-12-05T22:44:14.463 に答える