我的问题是我有3个视图文件和一个控制器。
以下是3个按钮点按事件的代码。
onb1:function(){
Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true);
Ext.Viewport.add({xtype:'second',height:'30%',style:'background:red'}).show();
},
onb3:function(){
Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true);
Ext.Viewport.add({xtype:'main'}).show();
},
onb2:function(){
Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true);
Ext.Viewport.add({xtype:'third',height:'60%',style:'background:orange'}).show();
}
它只能工作一次。
告诉我任何解决方案......
答案 0 :(得分:1)
第一次自动设置activeItem。之后你必须自己设置它。也没有必要调用show()。应该像这样工作:
Ext.Viewport.add(someView);
Ext.Viewport.setActiveItem(someView);
答案 1 :(得分:1)
原因是,这行代码:
Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true);
将删除您的组件,然后销毁它。
也许您必须以一种方式定义处理程序,使它们仅在定义时绑定到这些组件,而不是初始化。
因此,如果您没有在经常添加/删除的组件的initialize
方法中声明处理函数。
说您的组件是按钮,因此您的定义文件应如下所示:
Ext.define('mybutton',{
extend: 'Ext.Button',
config: {
text: 'my button'
},
initialize: function(){
var me = this;
this.addListener({
fn: me.doSmt,
event: 'tap'
});
}
doSmt: function(){
// implement your logics here.......
}
});