0

jquery-ui ダイアログ ウィジェットは、(他のすべてのウィジェットと同様に) 無名関数内にラップされます。

この関数内には、named と宣言された変数がありますsizeRelatedOptions。そのラッピングクロージャの外側からそのオブジェクトにキーを追加する必要があります。これを達成するための最良の方法は何ですか?

(function( $, undefined ) {

    var sizeRelatedOptions = {
        buttons: true,
        height: true,
        //etc
    }

    $.widget( "ui.dialog", {
        //widget code
    });

}( jQuery ) );

編集#1:上記のコードはjQuery uiのソースコードです

編集#2:その変数に単純にアクセスできないことを理解しました。だから私はこれを回避する必要があります。したがって、これが必要な理由についての詳細は次のとおりです。

jQuery ui のダイアログ ウィジェットを拡張して、別の buttonPane を追加しています。ペインがウィジェットに追加されたときにウィジェット自体のサイズを変更するには、 にオプションを追加したいと考えましたsizeRelatedOption。(これが最初の質問でした。)ダイアログウィジェットの機能は、オプションがキーとして_options存在するかどうかをチェックするためです。sizeRelatedOptionその場合_size、ウィジェットのサイズを変更する関数を呼び出します。

うまくいけば、私は自分自身を少し明確にしました。

4

5 に答える 5

2

ソース コードを直接変更しないとどうにもなりませんが、これは多くの理由で非常に悪い習慣であるため、考慮すべきオプションではありません。

変数はそのスコープに対してプライベートであり、オブジェクトがパブリックにアクセスできるようにしない限り、変数にアクセスするには、変数が宣言されたスコープと同じスコープまたは子スコープでコードを実行する必要があります。

ただし、一部の構成オプションを変更しようとする場合、ウィジェットは既にこのためのAPIを提供しています。

例えば、

$('#dialog').dialog({
    height: 500,
    width: 500
});

編集:なぜこれを達成しようとしているのかについて詳細を教えていただければ、おそらく他の選択肢を提供できるでしょう。

于 2013-08-14T13:43:23.287 に答える