我有一个屏幕,其中formBase包含所有动态创建的UI控件。我正在使用卡布局和视图之间切换。现在碰巧我必须在每次卡切换时执行formBase(我的意思是每次我的屏幕出现)。
我已经使用了beforeshow监听器来实现这一目标。但它不起作用。以下是我的代码。
var formBase = new Ext.form.FormPanel({
scroll: 'vertical',
ui: 'round',
items: [fieldSet, {
xtype : 'fieldset',
items : [ item1, item2, item3]
]
}],
listeners: {
beforerender: function(ele) {
console.log(" Screen before render");
initScreenComps()
},
beforeshow: function(ele) {
console.log(" screen before show");
}
}
});
修改:1
我有一个viewport.js文件,其中我有揭示更改视口的方法。这是Viewport.js的下面代码。它仍然无效。请建议。
MyApp.views.Viewport = Ext.extend(Ext.Panel, {
fullscreen: true,
layout: 'card',
initComponent: function() {
Ext.apply(this, {
items: [
{ xtype: 'MyApp.views.view1', id: 'view1' },
{ xtype: 'MyApp.views.view2', id: 'view2' },
{ xtype: 'MyApp.views.view3', id: 'view3' },
{ xtype: 'MyApp.views.view4', id: 'view4' },
{ xtype: 'MyApp.views.view5', id: 'view5' }
],
listeners:{
beforecardswitch:function(newCard, oldCard, index, animated){
//do something...
console.log(" Card switched" + " New " + newCard + " OLD : " + oldCard + " index + " index);
}
}
}
);
MyApp.views.Viewport.superclass.initComponent.apply(this, arguments);
},
// used for changing view port of application
reveal: function(target) {
this.setActiveItem(MyApp.views[target],{ type: 'slide', direction: 'right' }
);
}
});
现在我在按钮点击事件中从控制器调用view2。
MyApp.views.viewport.reveal('view2');
答案 0 :(得分:1)
我认为,最好是为它使用“beforeactivate”或“activate”事件监听器。只要卡片布局将此项目设置为活动项目,就会触发这些事件。所以,代码将是这样的:
var formBase = new Ext.form.FormPanel({
scroll: 'vertical',
ui: 'round',
items: [fieldSet, {
xtype : 'fieldset',
items : [ item1, item2, item3]
]
}],
listeners: {
beforeactivate: function(panel) {
console.log(" Screen before render");
initScreenComps()
}
}
});
答案 1 :(得分:0)
您应该听取beforecardswitch
事件。例如
listeners:{
beforecardswitch:function(newCard, oldCard, index, animated){
//do something...
}
}