土曜日, 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: ExtJS

火曜日, 14. 7 月 2009
ども、なんだか僕の名前があったのでコメントしてみました(笑)
こういう地味なやつがお役に立っているようでうれしく思います。
code:xでは、実践開発ガイド(まだ連載開始状態ですが)として体系だって解説していっています。参考になれば。
火曜日, 14. 7 月 2009
コメントありがとうございます。
実践開発ガイドみてますみてますよー。
日本語のまとまった資料が少ないなか大変有益です。