amanoman
9 Mar 2009, 4:23 AM
はじめまして
コンポーネントのonメソッド、addListenerメソッド等でイベントハンドラを追加した場合に、上位コンテナのremoveメソッドでそのコンポーネントが削除された場合は、イベントハンドラも自動的に削除されるのですか?
サンプルコード
<html>
<head>
<title>イベントテスト</title>
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css"/>
<!-- GC -->
<!-- LIBS -->
<script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
<!-- ENDLIBS -->
<script type="text/javascript" src="../../ext-all.js"></script>
<!--イベントテスト-->
<script type="text/javascript">
Ext.onReady(function() {
//センターにパネルを追加
var addCenterPanel=function() {
var panel=new Ext.Panel({title:'パネル',width:100,height:100,html:'テストです。'});
var center=Ext.getCmp('center');
center.add(panel);
center.doLayout();
//クリックイベントハンドラ追加
panel.el.on('click',function() {alert('クリック!!')});
}
//センターのパネルを全て削除
var removeCenterPanel=function() {
var center=Ext.getCmp('center');
if (center.items.length) {
center.removeAll();
center.doLayout();
}
}
var layout=new Ext.Viewport({
title:'イベントテスト',
layout:'border',
items:[
{
region:'west',
width:150,
items:[
new Ext.Button({
text:'パネル追加',
handler:addCenterPanel
}),
new Ext.Button({
text:'クリア',
handler:removeCenterPanel
})
]
},
{
xtype:'panel',
id:'center',
region:'center',
title:'センターパネル'
}
]
});
layout.render(document.body);
});
</script>
</head>
<body>
</body>
</html>
コンポーネントのonメソッド、addListenerメソッド等でイベントハンドラを追加した場合に、上位コンテナのremoveメソッドでそのコンポーネントが削除された場合は、イベントハンドラも自動的に削除されるのですか?
サンプルコード
<html>
<head>
<title>イベントテスト</title>
<link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css"/>
<!-- GC -->
<!-- LIBS -->
<script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
<!-- ENDLIBS -->
<script type="text/javascript" src="../../ext-all.js"></script>
<!--イベントテスト-->
<script type="text/javascript">
Ext.onReady(function() {
//センターにパネルを追加
var addCenterPanel=function() {
var panel=new Ext.Panel({title:'パネル',width:100,height:100,html:'テストです。'});
var center=Ext.getCmp('center');
center.add(panel);
center.doLayout();
//クリックイベントハンドラ追加
panel.el.on('click',function() {alert('クリック!!')});
}
//センターのパネルを全て削除
var removeCenterPanel=function() {
var center=Ext.getCmp('center');
if (center.items.length) {
center.removeAll();
center.doLayout();
}
}
var layout=new Ext.Viewport({
title:'イベントテスト',
layout:'border',
items:[
{
region:'west',
width:150,
items:[
new Ext.Button({
text:'パネル追加',
handler:addCenterPanel
}),
new Ext.Button({
text:'クリア',
handler:removeCenterPanel
})
]
},
{
xtype:'panel',
id:'center',
region:'center',
title:'センターパネル'
}
]
});
layout.render(document.body);
});
</script>
</head>
<body>
</body>
</html>