我是 extJS 的新手,也许我只是不知道正确的策略,所以如果你愿意,可以告诉我一个更好的解决方案。
我正在尝试:我有一个 extJS 网格。双击时,应该会出现一个 ExtJS Window 容器(用于详细设置),其中包含多个选项卡。该窗口具有设置单击元素的 ID 的功能。窗口中的每个选项卡也需要此 ID。因此,当窗口容器中的 ID 发生更改时,我想通过一个事件通知每个选项卡容器有关更改的 ID。
我的问题是,我无法从选项卡访问窗口以添加侦听器,因为窗口在第一次打开之前不会呈现。
如果您查看我的源代码,也许您可以更好地理解我的问题:
窗口 (当双击网格元素时调用 setCustomerId() 和 show())
Ext.define('myApp.path.view.Edit', {
extend: 'Ext.window.Window',
alias: 'widget.myEdit',
title: 'Edit',
height: 500,
width: 1000,
layout: 'fit',
closeAction: 'hide',
/**
* Initialize my custom event
*/
initComponent: function() {
this.addEvents('customerChanged');
this.callParent();
},
/**
* Sets the current customerId and fires a customerChanged event
* @param {Number} customerId
*/
setCustomerId: function(customerId) {
this.customerId = customerId;
this.fireEvent('customerChanged', this.customerId);
},
/**
* create a container for the editor tabs
*/
items: [{
xtype: 'tabpanel',
items: [
{
xtype: 'myTab'
}
]
}]
})
示例选项卡
Ext.define('myApp.path.view.myTab', {
extend: 'Ext.container.Container',
alias: 'widget.myTab',
title: 'Customer',
layout: 'fit',
/**
* Listen to my custom event
* PROBLEM: works, but only after the window has been displayed one time
*/
afterRender: function() {
this.findParentByType('window').addListener("customerChanged", this.onCustomerChanged)
this.callParent();
},
/**
* Listen to my custom event
* PROBLEM: doesn't work, findParentByType('window') is undefined
*/
initComponent: function() {
this.findParentByType('window').addListener("customerChanged", this.onCustomerChanged)
this.callParent();
},
onCustomerChanged: functio() {}
})
我希望你能明白我的意图。谢谢!