论坛首页 Web前端技术论坛

tabPanel动态添加删除tab页的问题和解决办法

浏览 3950 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-10-29   最后修改:2009-10-29
tabpanel上的tab是随着操作动态添加的,每次添加前都会删除原来的tab

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();


-----------------
问题是解决了,但是原因我还是不清楚,不知道哪位高手可以解释下的。







   发表时间:2009-10-29  
去掉绑定的事件是一种技巧吧 我个人是这么认为的。

最近也在做ext的项目。
0 请登录后投票
   发表时间:2009-10-31  
三角杀手王 写道
tabpanel上的tab是随着操作动态添加的,每次添加前都会删除原来的tab



通过这句话, 我是否可以认为,你的tabpanel永远都只有一个tab.

假如每次都只会有一个tab. 那么要还增加tab.再删除原来的tab这步做什么呢.
直接刷新当前tab不就可以了吗?

0 请登录后投票
   发表时间:2009-11-02  
页面左边是功能树,点击的时候动态给tabpanel添加tab页,前一次的都要删除,而且tab页是多个的
0 请登录后投票
   发表时间:2009-11-02  
当tab被remove的时候,会自动activate可用的一个(否则界面上不是一片空白),所以使用removeall触发事件,会调用到每一个的acivate事件
0 请登录后投票
   发表时间:2009-11-04  
为什么要删除呢,不停的删除,创建是最费资源的,而且js里删除的组件内存好像不会释放,那何不隐藏起来,下次用的时候直接显示呢?
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics