窗口的Extjs4侦听器
在我的应用程序中,我有许多窗口和面板,我使用自定义滚动条。因此,对于每个窗口或面板,我需要指定afterlayout listener以获得自定义滚动条窗口的Extjs4侦听器,extjs4,Extjs4,在我的应用程序中,我有许多窗口和面板,我使用自定义滚动条。因此,对于每个窗口或面板,我需要指定afterlayout listener以获得自定义滚动条 listeners:{ afterlayout: function(c){ fleXenv.fleXcrollMain(c.body.id); } } 所以我要找的是,我需要为窗口和面板全局添加此侦听器,这样,通过一次性添加此代码,所有窗口或面板都会收到效果 有没有办法做到这一点您可
listeners:{
afterlayout: function(c){
fleXenv.fleXcrollMain(c.body.id);
}
}
所以我要找的是,我需要为窗口和面板全局添加此侦听器,这样,通过一次性添加此代码,所有窗口或面板都会收到效果
有没有办法做到这一点您可以创建自己的扩展ExtJS默认组件的面板和窗口。您可以定义所需的侦听器,设置xtypes,然后在应用程序中使用这些修改过的组件
另一个解决方案是使用IMHO覆盖现有的Ext.panel.panel和Ext.window.window,我认为最好的方法是定义您的个人窗口/面板类。是的,一种方法是使用Ext.override函数,但我认为这不是一个好主意 我建议你这样做:
Ext.define ('MyCustomWindow', {
extend: 'Ext.window.Window' ,
listeners: {
afterlayout: function (win) {
fleXenv.fleXcrollMain (win.body.id);
}
}
}
Ext.define ('MyCustomPanel', {
extend: 'Ext.panel.Panel' ,
listeners: {
afterlayout: function (panel) {
fleXenv.fleXcrollMain (panel.body.id);
}
}
}
现在,您可以实例化MyCustomWindow和MyCustomPanel,保持Ext.window.window和Ext.panel.panel不变
另一种方法是使用WindowManager和PanelManager(这是您自己定义的):
在这种情况下,首先必须实例化窗口和面板,将它们注册到它们的管理器,然后像我在上面的示例中所做的那样调用每个函数。您的自定义滚动条似乎在应用程序的所有窗口和面板中使用。因此,扩展核心ExtJs类IMHO没有什么错。 将其作为默认启用的“功能”实现,但在不需要滚动条的少数情况下,可以禁用
Ext.define('patch.Ext.panel.Panel-scrollbar', {
override: 'Ext.panel.Panel',
enableCustomScrollbar: true,
afterLayout: function() {
this.fixScrollbar();
this.callParent(arguments);
},
fixScrollbar: function() {
if(this.enableCustomScrollbar) {
// your code
}
}
});
使用Ext.require('patch.Ext.panel.panel scrollbar')
加载,或将其作为依赖项(requires
)添加到应用程序定义中
Ext.window.window
扩展自Ext.panel.panel
,因此它将继承该行为
Ext.define('patch.Ext.panel.Panel-scrollbar', {
override: 'Ext.panel.Panel',
enableCustomScrollbar: true,
afterLayout: function() {
this.fixScrollbar();
this.callParent(arguments);
},
fixScrollbar: function() {
if(this.enableCustomScrollbar) {
// your code
}
}
});