2016-04-18 10 views
0

にjqueryのコードをリロードする必要があります。GrailsのAJAX呼び出しが、私はAJAX呼び出しと私は再び関連のjQueryを記述する必要が演出テンプレートを作成するときに私はsubmittoremoteなど、</p> <p>をremotelinkをGrailsの2.4とformremoteを使用してAJAX要求を使用しています各テンプレート

私はただ一度だけjqueryのコードを記述する必要があるように、私が何かを必要とするすべてのテンプレートにコードを繰り返すInstred、

$('.customdatepicker').datepicker({ 
        format: "dd/mm/yyyy", 
        autoclose:true,todayHighlight: true 
       }); 
ように。

レイアウトで定義した場合、それはすべての非ajax呼び出しでのみ使用できます。

ありがとうございました。

+0

内のすべてのファイルで一般的に使用される機能、およびすべてのビューの特定のjsのファイルを宣言することができます - "それ以外のすべての非アヤックスコールには利用可能です_"何がJSファイルをテンプレートに追加するのを止めますか? –

+0

こんにちはMikelis、私はテンプレートにjsファイルを含めると、他のすべてのコードもロードされている場合、私は単一のjsを作った。 –

+1

それを2つのファイルに分割します - 特定のテンプレートだけに適用するコードを1つ。 –

答えて

0

次の点を考慮する必要があります


あなたはAjaxでコンテンツをロードすると、それを作成した要素が自動的に他のすべての の要素がページで作成されたすべてのバインディングやイベントがありません ん負荷がある。要素に をajaxの後で特定の動作にする必要がある場合は、フォームリモートタグのonSuccessで呼び出すことができる関数 を作成する必要があります。


ときにページ私の-ajaxの要素が存在する場合、後者はのみ動作しますので、あなたが代わりに

$('my-ajax-element').click(); 

$('#my-element-in-page-when-loaded').on('click', 'my-ajax-element', function(){ /*jquery ajax functions load, get, post, ajax*/}) 

として正規形と使用jQueryのon機能を使用することができます最初にロードされます。


問題はあなたのJavaScriptは間違った順序でロードされて、あなたはあなたの場所の後に、あなたのレイアウトをテンプレートに次の

<content tag="javascript"> 
    //your js 
</content> 

と、次のコードのようにコーディングしなければならないということであればあなたのリソースやアセットのjavascriptを宣言してください。

//your layout assets 
<g:pageProperty name="page.javascript"/> 
このように

あなたはこれについての詳細を説明してもらえ

<content tag="javascript"> 
    //your view specific code. 
</content> 
関連する問題