在优化我的 Sencha Touch 2 应用程序时,我多次遇到这个问题。
很明显,我应该保持 DOM 的轻量级,我的应用程序在上面包含一个Ext.TabBar
和一个 main Ext.Container
。每次从一个视图切换到另一个视图时,我只需删除当前视图并将新视图添加到该容器。
但问题是,有些视图有自定义数据。我的意思是它们具有内部数据,例如 html 内容、过滤的存储记录等。当我将它们从主容器中删除时,我想以某种方式将它们的“状态”保存到全局变量中,例如:我正在做一个 e-带有详细信息的产品的商务应用程序。从主容器中删除详细信息面板时,我想做这样的事情:
var saved_detail_panel = mainContainer.getActiveItem();
如果我能做到这一点,稍后当我想将该详细信息面板添加回主容器时,我可以简单地使用:
mainContainer.add(saved_detail_panel);
我已经尝试了很多次,但还没有找到一个有效的。
非常感谢任何帮助。谢谢你。
更新:当我将此代码放在控制器中的事件处理程序中时:
var temp = Ext.create('taxi.view.location.LocationPanel', {showAnimation: null});
taxi.main_container = temp;
它运行良好,但性能不佳。我想做的事情是只在我的app.js中创建一次,如下所示:
launch: function(){
var temp = Ext.create('taxi.view.location.LocationPanel', {showAnimation: null});
};
并且只在控制器中使用它:
taxi.main_container = temp;
它是第一次工作。但在第二次,它显示了这个错误:
Uncaught TypeError: Cannot call method 'replaceCls' of null