0

私はこのようなプラグインを構築しました:

;(function ($,window,undefined){

  ...
  ...default settings area...
  ...content area...
  ...

})(jQuery,window);

しかし、このプラグインは多くの (!) 設定を持つことができます.(ファイル設定)

したがって、各構成ファイルは js ファイルに含めることができます。例 :

mySettings.js :

var mySetings= {a:1,b:2.....}

だから問題はどこですか:

  • プラグインの前に設定ファイルをロードする必要があります。mySettings (そのため、プラグインはオーバーライド設定領域で読み取ることができます)

  • mySettingsプラグイン自体と通信する唯一の方法 は、windowオブジェクトを介することです

質問 :

jsファイルを介して多くの(!)設定を持つことができるプラグインを設定する正しい方法は何ですか.

4

1 に答える 1

2

使用するコード例がないため、一般化されたソリューションをいくつか紹介します。

  1. 配列内の設定オブジェクトを収集し、オーバーライド設定領域内でそれらを反復処理します。
  2. ウィンドウを介してプラグインを公開し、そこに設定を直接追加します。

例 1

JS

//File 1.js
window.settings = window.settings || []; 
window.settings.push({a:'11'}); 

//File2.js
window.settings = window.settings || []; 
window.settings.push({b:'22', c:'33'}); 

//File3.js
window.settings = window.settings || []; 
window.settings.push({b:'222'}); 

//Main.js File
;(function ($,window,undefined){

    var plugin = function(settings){
        var defConfig = {
            a: '1', 
            b: '2',
            c: '3'
        }; 

        var len = settings.length, i; 

        if(len){
            for(i = 0; i < len; i++){
               defConfig = $.extend(defConfig, settings[i]); 
            }
        }else{
            defConfig = $.extend(defConfig, settings); 
        }

        alert(JSON.stringify(defConfig)); 
    }; 

    var instance = new plugin(window.settings || []); 

})(jQuery,window);

例 2

//Main.js File
;(function ($,window,undefined){

    var plugin = function(){
        var defConfig = {
            a: '1', 
            b: '2',
            c: '3'
        }; 

        this.overrideSettings = function(settings){
            var len = settings.length, i; 

            if(len){
                for(i = 0; i < len; i++){
                   defConfig = $.extend(defConfig, settings[i]); 
                }
            }else{
                defConfig = $.extend(defConfig, settings); 
            }

            alert(JSON.stringify(defConfig)); 
        }
    }; 

    window.instance = new plugin(); 

})(jQuery,window);


//File 1.js
window.instance.overrideSettings({d:'93'}); 

//File2.js
window.instance.overrideSettings({b:'22222'}); 
于 2013-04-05T12:06:42.163 に答える