2

私はこのようなjqueryウィジェットを持っています:

$.widget("ui.MyWidget", {
              options: {            
            Value1: 10,
            Value1: 20,
        },
// and other methods like _create,...
});

そして、私はそれを次のように拡張しています:

$.widget("ui.MyExtWidget", $.extend({
            options: {
            Value3: 20,
        }}, $.ui.MyWidget.prototype, {
        myNewMethod: function(){
            alert(this.options.Value1+this.options.Value3);
        }
}

HTMLで「myNewMethod」を呼び出す必要があります。

私のhtmlコードは次のようなものです:

$("#Div1").MyExtWidget();
$("#Div1").MyExtWidget("myNewMethod");

上記のコードを使用すると、初期化の前にTimeSpanHeaderのメソッドを呼び出すことができないときに、このような例外が発生します。メソッド'myNewMethod'を呼び出そうとしました

「myNewMethod」メソッドを呼び出す方法は何ですか?

4

1 に答える 1

1

$.widgetウィジェットファクトリは、コンストラクタを使用して既存のウィジェットから拡張する方法を提供します。

$.widget("ui.MyExtWidget", $.ui.MyWidget, {
    options: {
        alertText: ''
    },
    myNewMethod: function() {
        alert('Value1 = ' + this.options.Value1);
        alert('alertText = ' + this.options.alertText);
    }
});

注:コンストラクターは、オプションの拡張も処理します。これは、jQueryUIライブラリ自体で使用されるメソッドです。たとえば、ウィジェットui.mouseにはオプションがあり、他の多くのウィジェットはそれを継承し、ui.mouseからのものと一緒に独自の追加オプションを持っています。

デモ


Widget Factory wiki投稿から:

ウィジェットファクトリは、2つまたは3つの引数を受け入れるグローバルjQueryオブジェクト(jQuery.widget)の単純な関数です。

jQuery.widget( "namespace.widgetname"、/ *オプション-継承する既存のウィジェットプロトタイプ/、/ウィジェットのプロトタイプになるオブジェクトリテラル* / {...});

2番目の(オプションの)引数は、から継承するウィジェットのプロトタイプです。たとえば、jQuery UIには、残りのインタラクションプラグインのベースとなる「マウス」プラグインがあります。これを実現するために、ドラッグ可能、ドロップ可能などはすべて、次のようにマウスプラグインから継承します。jQuery.widget( "ui.draggable"、$ .ui.mouse、{...}); この引数を指定しない場合、ウィジェットは「ベースウィジェット」jQuery.Widgetから直接継承します(小文字の「w」jQuery.widgetと大文字の「W」jQuery.Widgetの違いに注意してください)。

于 2012-01-21T13:31:04.187 に答える