浏览 3950 次
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-10-29
最后修改:2009-10-29
js片段调用如下: 1 删除原来的tab tabPanel.removeAll(); 2 添加新的tab,每个tab都绑定了一个事件 tabPanel.add({ id: tabItems[i].id, title: tabItems[i].title, url : tabItems[i].url, listeners: {activate: handleActivate} }); 问题是,当选中的tab页不是第一个的时候,每次动态添加新的tab页, 在调用tabPanel.removeAll();都会触发第一个tab页面的handleActivate事件,这个性能白白消耗。 解决方法:在每次删除tab页的时候去掉第一个tab页的绑定事件 var fistpanel = tabPanel.items.get(0); if (fistpanel){ fistpanel.removeListener("activate",handleActivate); } tabPanel.removeAll(); ----------------- 问题是解决了,但是原因我还是不清楚,不知道哪位高手可以解释下的。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-10-29
去掉绑定的事件是一种技巧吧 我个人是这么认为的。
最近也在做ext的项目。 |
|
返回顶楼 | |
发表时间:2009-10-31
三角杀手王 写道 tabpanel上的tab是随着操作动态添加的,每次添加前都会删除原来的tab
通过这句话, 我是否可以认为,你的tabpanel永远都只有一个tab. 假如每次都只会有一个tab. 那么要还增加tab.再删除原来的tab这步做什么呢. 直接刷新当前tab不就可以了吗? |
|
返回顶楼 | |
发表时间:2009-11-02
页面左边是功能树,点击的时候动态给tabpanel添加tab页,前一次的都要删除,而且tab页是多个的
|
|
返回顶楼 | |
发表时间:2009-11-02
当tab被remove的时候,会自动activate可用的一个(否则界面上不是一片空白),所以使用removeall触发事件,会调用到每一个的acivate事件
|
|
返回顶楼 | |
发表时间:2009-11-04
为什么要删除呢,不停的删除,创建是最费资源的,而且js里删除的组件内存好像不会释放,那何不隐藏起来,下次用的时候直接显示呢?
|
|
返回顶楼 | |