独自のMy.grid
継承元を作成し、イベントExt.grid.Panel
にリスナーを設定しitemdblclick
ました。
このイベントのハンドラー関数は、第一引数として getし、スコープとしてview
持ちます。this
view
と で異なる値を取得する理由がわかりませんthis
?
this
のインスタンスですMy.grid
view
のインスタンスですExt.grid.Panel
(しかし、私は期待していますMy.grid
)
私は何か間違ったことをしているかもしれませんか?それとも ExtJS のバグ/機能ですか?
view
継承されたオブジェクトへの参照がある継承されたウィジェットを書き込む方法は?
これは簡単な例です:
<!DOCTYPE html>
<html>
<head>
<title>ExtJS Test page</title>
<link rel="stylesheet" href="http://cdn.sencha.io/ext-4.1.1-gpl/resources/css/ext-all-gray.css">
<script type="text/javascript" charset="utf-8" src="http://cdn.sencha.io/ext-4.1.1-gpl/ext-all.js"></script>
<script type="text/javascript">
Ext.create('Ext.data.Store', {
storeId: 'simpsonsStore',
fields: ['name', 'email', 'change'],
data: {
'items': [
{ 'name': 'Lisa', 'email': 'lisa@simpsons.com', 'change': 100 },
{ 'name': 'Bart', 'email': 'bart@simpsons.com', 'change': -20 },
{ 'name': 'Homer', 'email': 'home@simpsons.com', 'change': 23 },
{ 'name': 'Marge', 'email': 'marge@simpsons.com', 'change': -11 }
]
},
proxy: { type: 'memory', reader: { type: 'json', root: 'items' } }
});
Ext.define('MY.grid', {
extend: 'Ext.grid.Panel',
alias: 'widget.simpsonsgrid',
title: 'Simpsons',
store: Ext.data.StoreManager.lookup('simpsonsStore'),
columns: [
{ header: 'Name', dataIndex: 'name' },
{ header: 'Email', dataIndex: 'email' },
{ header: 'Change', dataIndex: 'change' }
],
initComponent: function () {
this.callParent(arguments);
this.on('itemdblclick', this.test, this);
},
test: function (view, record) {
console.log(this); // instance of My.grid
console.log(view); // instance of Ext.grid.Panel
}
});
Ext.onReady(function () {
Ext.widget('simpsonsgrid', {
renderTo: Ext.getBody()
});
});
</script>
</head> <body></body> </html>