2012-02-16 8 views
1

jQuery UIウィジェットのファクトリパターンを使用して作成されたウィジェット自体に対するグローバルリファレンスはありますか?jQuery UIウィジェットファクトリ現在のウィジェットのコンテキストを取得

私はウィジェットに等しいウィジェットVARを設定するようなことをやってみました

$.widget("my.widget", { 
    _widget: this, 
    _create: function() { 
    // _widget should == the whole widget 
    } 
}); 

私も同じようにjQueryを通じてウィジェットの文脈をつかむしようとしました:私は

$.widget("my.widget") 

ウィジェットの中であなたがウィジェットにコールバックできるようになっているはずのことを理解できません。あなたは「この」キーワードを経由して、インスタンスを参照してくださいウィジェットメソッド内ながら

答えて

1

あなたが方法でいると書いたときにしばしばそうであるように(コンテキストが変更されたことが判明した場合
$.widget('my.widget', { 
    foo: true, 
    _create: function() { 
     var foo = this.getFoo(); 
    }, 
    getFoo: function() { 
     return this.foo; 
    } 

}); 

jQueryの)その後、あなただけのローカルVARの「これ」への参照格納できます。先に述べたようにthisがウィジェットからウィジェットの機能を呼び出すための最も一般的な方法で、

$.widget('my.widget', { 
    foo: true, 
    _create: function() { 
     var self = this; 
     this.element.click(function() { 
      var foo = self.getFoo(); 
     }); 
    }, 
    getFoo: function() { 
     return this.foo; 
    } 

}); 
1

を。あなたの例では

、それがこれを行うには意味がありません:あなたは_widget変数に取得するには、既にコンテキストが必要になるため

_widget: this 

を。

ウィジェットから直接来ていないイベントでイベントハンドラを作成するときなど、簡単にアクセス可能な場所にコンテキストを保存できないことがあります。 Learning To Use the Widget Factory

から

あなたはevent.targetインスタンスから、またはコントロールのIDのいずれかから、制御を得ることができる場合、あなたはの名前を渡し、jQueryオブジェクトに.dataの()関数を呼び出すことができますがウィジェット。ただし、ウィジェットの名前にはドットの代わりにダッシュを使用します。

var $control = $('#' + myControlId); 
var $widget = $control.data("my-widget"); 
$widget.getFoo(); 
関連する問題