土曜日, 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の方を利用することになるかな?

Tags:
Category: ExtJS
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

2 Responses

  1. ども、なんだか僕の名前があったのでコメントしてみました(笑)
    こういう地味なやつがお役に立っているようでうれしく思います。
    code:xでは、実践開発ガイド(まだ連載開始状態ですが)として体系だって解説していっています。参考になれば。

  2. コメントありがとうございます。
    実践開発ガイドみてますみてますよー。
    日本語のまとまった資料が少ないなか大変有益です。

Leave a Reply