如何在Sencha Touch中销毁非活动视图

Phi*_*hil 7 extjs sencha-touch sencha-touch-2

我坚持一个我认为非常重要的问题.在简单的Sencha Touch应用程序中,我有很多观点.我的主视图是一个TabPanel,底部有对接图标.有时在我的应用程序中,我切换到Tabpanel之外的另一个视图.我不希望DOM重载视图,我不再需要了,所以我正在寻找解决方案来销毁视图,当它处于非活动状态时.我试过这个,同时在我的控制器中切换到另一个视图:

this.getMainview().destroy();
Run Code Online (Sandbox Code Playgroud)

似乎Mainview被删除但我收到一个错误:

Uncaught TypeError: Cannot read property 'dom' of null
Run Code Online (Sandbox Code Playgroud)

所以我想.destroy() - 方法有什么问题或是否有更好的方法来处理这个问题?

Sag*_*odi 6

在移动到新视图之前,您可以调用以下代码来删除当前视图

Ext.Viewport.remove(Ext.Viewport.getActiveItem(), true);  
Run Code Online (Sandbox Code Playgroud)

或者您也可以提供项目对象而不是ActiveItem


Thi*_*yen 5

我以前多次坚持这个问题.目前看来,在Sencha Touch 2中没有高效且实际上没有错误的解决方案.当第二次再次添加视图时,将再次显示该不愉快的错误.

可能的解决方案:

此代码段:

your_container(your_container.getActiveItem(), false);

实际上不会从内存中破坏你的子组件,而是从DOM中删除.稍后当你添加它时,将没有错误(因为我已经测试过).

希望能帮助到你.