土曜日, 4 月 11th, 2009 | Author: djodjo
Functionクラスにある、createDelegateという関数。サンプルソースに書いてあったのですが、いまいちどう使うものか理解できていなかったのです。
ですが、先日の勉強会で出てきたソースに書いてあって目からウロコ!!!ありがとう小堤氏。
コールバック関数を指定する箇所で利用します。
例として、ボタン押したら押したボタンに応じてPanelの背景を変えるとします。
デ モ
Ext.onReady(function() { var win = new Ext.Window({ title:'createDelegate Sample', id:'win1', width : 300, height : 200, tbar : [{ text : 'red', handler : changeColor1.createDelegate(this,['red']) }, { text : 'blue', handler : changeColor2 }, '->',{ text : 'init', handler : changeColor1.createDelegate(this,['white']) }] }); win.show(); }); function changeColor1(color) { Ext.getCmp('win1').body.setStyle('background-color',color); } function changeColor2(btn,event) { Ext.getCmp('win1').body.setStyle('background-color',btn.text); }
ハンドラーの指定
handler:this.onClick
だけど、引数をつけたい場合がある。
handler:this.onClick(aaa)
しかし、こうするとfunction自体が実行されちゃうのでNG
じゃぁどうする。
handler:this.onClick.createDelegate(this,aaa)
これで、コールバック関数を引数付きで設定することができる。
もし、createDelegateに引数が無ければclickイベントの引数が割り当てられる
他にも似たような関数で
createCallback
がある。
これは、createDelegateと違って、関数内のスコープが指定できない。
たいていはdelegateの方を利用することになるかな?
Category: 未分類
火曜日, 14. 7 月 2009
ども、なんだか僕の名前があったのでコメントしてみました(笑)
こういう地味なやつがお役に立っているようでうれしく思います。
code:xでは、実践開発ガイド(まだ連載開始状態ですが)として体系だって解説していっています。参考になれば。
火曜日, 14. 7 月 2009
コメントありがとうございます。
実践開発ガイドみてますみてますよー。
日本語のまとまった資料が少ないなか大変有益です。