1

ページ上のすべてのインスタンスに対して一部の初期化ウィジェットのコードを 1 回だけ実行すると問題が発生します。

これが私の状況です...

ウィジェットの初期化中に JS ファイルをロードする必要があります。現在、私はこれを内部_create()メソッドで行っています。しかし、ページに 2 つ以上のインスタンスを配置しようとすると、ウィジェットは同じ JS ファイルを数回ロードしようとします。もちろん、それは良くありません...だから、同期のためのメカニズムが必要です。

それをよりよく同期する方法はありますか?

私は、同じファイルを 2 回ロードせず、ロードのプロセスを制御し、プロセスが実行されたときにすべての関心のある部分に通知するだけの、ロードされたインテリジェント JS のページ上のすべてのウィジェットのインスタンスに対して 1 回だけコードを実行できるメカニズムについて考えていました。終了しました。

更新

ウィジェット内に一部の JS ファイルをロードする際には、実際には 2 つの問題があります。

  1. ファイルを一度だけロードする
  2. JavaScript コードを使用する準備ができていることをすべてのウィジェットのインスタンスに通知する

ウィジェットの初期化中に JS ファイルの JavaScript コードが使用される可能性があるため、ウィジェットが適切にロードされ、使用できるようになったことを通知する必要があります。

4

1 に答える 1

0

私はあなたの必要性を理解しているかどうか確信が持てないので、これが役に立てば幸いです:

 var pluginName = "MyPlugin";
    $.fn[pluginName] = function ( options ) {

        if(!$.data("body", "alreadyLoadedFile"))
        {
          //load your file
           $.data("body", "alreadyLoadedFile", true);
        }
        return this.each(function () {
            if (!$.data(this, 'plugin_' + pluginName)) {
                $.data(this, 'plugin_' + pluginName, 
                new Plugin( this, options ));
            }
        });
    };

主なアイデアは、dom 要素 (body タグなど) でデータを使用するか、js ファイルに id を与えて、それがページに存在するかどうかを確認することです。

于 2013-11-15T01:03:45.853 に答える