1

再利用目的で作成された部分ビューがあります。この部分ビューには、Chosen プラグインを使用するドロップダウン リストがあります。そのため、部分ビューでは、選択した js/css ファイルをいくつかの JavaScript コードと共に参照して、ドキュメントの準備を整えます。

意図したとおりに機能します。ただし、ボタンクリックイベントで部分ビューをレンダリングするページがあります。ユーザーは何度でもクリックできます。

私の懸念は、ボタンをクリックするたびに重複した js がロードされることです。おそらくこれが、部分ビューに js を直接追加することを人々が推奨しない理由です。私の場合、プラグインと部分ビュー自体の操作のために必要です。読み込まれた js をチェックし、その後のクリック イベントで再度読み込まれないようにする良い方法はありますか?

4

2 に答える 2

0

Chosen の JavaScript および CSS ファイルは、ページが最初に読み込まれるときにページに含まれている必要があります。ユーザーがボタンをクリックしたら、Ajax 呼び出しを行ってパーシャルを含めます。AJAX リクエストの成功コールバックで、ページに挿入されたばかりのドロップダウン リストの Chosen プラグイン コードを初期化します。

重複した JS ファイルと CSS ファイルが読み込まれることは間違いありませんが、これは間違いなく望ましくありません。

$.ajax(...)
    .done(function(data) {
        $("#foo")
            .html(data)
            .find("select")
            .each(function() {
                $(this).chosen({...});
            });
    });
于 2014-12-10T21:05:19.847 に答える
0

答えで私のコメントを拡張します。

複数の css ファイルを残すことができますが、害はないと思います。JSファイルに関しては、最初にラッパーファイルを作成する必要があります

wrapper.js

$(function() {
      if (!$().chosen) { //we do this only if chosen is not present
         var script = document.createElement('script');
         script.type = 'text/javascript';
         script.src = 'url to yor chosen library';

         $("body").append(script);
      }     
});

次に、ビューで、ライブラリ パスの代わりにこのwrapper.jsファイルを参照します。chosen

于 2014-12-10T21:41:41.117 に答える