我编写了自己的My.grid
继承自事件Ext.grid.Panel
并设置了监听itemdblclick
器。
此事件的处理函数view
作为第一个参数获取,并this
作为范围。
我不明白为什么我在view
and中得到不同的值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>