0

ブートストラップ datepicker プラグインを使用しておりheadTemplate、プラグインの最後でオブジェクトをオーバーロードする必要があります。

それは次のようになります。

var DPGlobal = {
        modes: [ ... ],
        isLeapYear: function ( year ) {
             [...]
        },
        [...]

        headTemplate: '<thead>'+
                        '<tr class="datepicker-btn-group">'+
                            '<th class="prev"><div class="dp-btn"><i class="timely-icon-arrow-left"/></div></th>'+
                            '<th colspan="5" class="switch"><div class="dp-btn"></div></th>'+
                            '<th class="next"><div class="dp-btn"><i class="timely-icon-arrow-right"/></div></th>'+
                        '</tr>'+
                    '</thead>',
       contTemplate: '<tbody><tr><td colspan="7" class="grid-picker"></td></tr></tbody>'
};

確かに、私はまだJavaScriptを学んでいるので、次のコードが私が望むことをしない理由を理解しようとしています。

まず、外部 JS ファイルが読み込まれ、関数が使用可能であることを確認する必要があります。jQuery の.load()メソッドでコールバックを使用してそれを実行しようとしています。ターゲットでいくつかの参照エラーが発生しており、documentこれのベストプラクティスについて確かに混乱しています-本当に言いたいだけです

$( 'lib/bootstrap-datepicker/js/bootstrap-datepicker.js' ).load( function() {
 // overwrite/load function 
}); 

しかし、それは多くのターゲット/参照エラーをスローしているので、代わりに次のことを試しています.load().目標。これはしばしば私を混乱させます-何らかの形でグローバルで特定のものを参照しない関数を実行したいときにjQueryで物事を参照します(したがって、document参照の試み)。

$( document ).load( 'lib/bootstrap-datepicker/js/bootstrap-datepicker.js', function() {
    origDPGlobal.headTemplate = DPGlobal.headTemplate;
            DPGlobal.headTemplate = // 'string of HTML for new template';
});

最後に (皆さん、申し訳ありません)、headTemplate が最初にコロン経由でどのように宣言されているかを理解していないことです:

var DPGlobal = {
    [...],
    headTemplate: '// html string',
    contTemplate: '//html string'
};

このように、これらを配列からプロトタイプ オブジェクトとして再宣言する必要がありますか?

DPGlobal[headTemplate] = '// new html string';
DPGlobal[contTemplate] = '// new html string';

初心者を助けてくれてありがとう!

4

1 に答える 1

1

いくつかのこと:

最初にload、ファイルの内容を要素にロードするために使用されます。代わりにhttp://docs.jquery.com/Ajax/jQuery.getScriptを探していますgetScript

次に、以下は同じです (オブジェクトを作成するだけです):

//one way to build an object
var DPGlobal = {
    headTemplate: '// html string',
    contTemplate: '//html string'
};

//another way to build the same object
var DPGlobal = {};
DPGlobal.headTemplate = 'html string';
DPGlobal.contTemplate = 'html string';

ご覧のとおり、中括弧メソッドは、最初にオブジェクトにプロパティを設定するだけで、後で割り当てた場合と同じです。

第三に、テンプレートをオーバーライドする方法についてのあなたの推測は近いです。角かっこでプロパティを参照する場合は、文字列を使用する必要があります。

//your way
DPGlobal['headTemplate'] = '// new html string';
DPGlobal['contTemplate'] = '// new html string';

//same as
DPGlobal.headTemplate = '// new html string';
DPGlobal.contTemplate = '// new html string';
于 2012-10-02T19:13:22.053 に答える