ExtJS TabPanel限制选项卡数量的实现思路与代码
针对ExtJSTabPanel频繁打开选项卡导致性能问题,提出限制数量方案:利用固定变量存储选项卡ID形成队列,每新增选项卡时移除最早ID并移位,使同时存在的选项卡数不超过变量个数。该轻量方法遵循先进先出规则,通过ID查重避免重复创建,适合资源受限场景。
var tabIndex = 'shouye';
var tabIndex2 = 'shouye';
var tabIndex3 = 'shouye';
var tabIndex4 = 'shouye';
var tabIndex5 = 'shouye';
var tabIndex6 = 'shouye';
var tabIndex7 = 'shouye';
var loadPanel = function(node) {
var id = node.id;
tabIndex7 = id;
var href = node.attributes.href;
var text = node.text;
var mainPanel = Ext.getCmp('mainPanel');
var qtip = node.attributes.qtip;
var tab = mainPanel.getComponent(String(id));
if(tab) {
mainPanel.setActiveTab(tab);
return;
}
tab = mainPanel.add(new Ext.Panel ({
id : String(id),
title : text,
tabTip : text,
html : '',
autoScroll: true,
enableTabScroll:true,
defaults: {autoScroll:true},
closable : true
}));
mainPanel.setActiveTab(tab);
mainPanel.remove(tabIndex, true);
tabIndex = tabIndex2;
tabIndex2 = tabIndex3;
tabIndex3 = tabIndex4;
tabIndex4 = tabIndex5;
tabIndex5 = tabIndex6;
tabIndex6 = tabIndex7;
}
实现思路非常简洁:利用多个变量依次保存上一批选项卡的ID,新增选项卡后立即移除最旧的`tabIndex`,再将所有变量依次前移一位。这样始终只保留最近打开的几个选项卡。代码中使用了7个变量,意味着最多同时保留7个选项卡(实际逻辑是每次删除`tabIndex`后移位,因此同时存在的选项卡数量等于变量个数减1?严格来说,初始只有一个,之后每新增一个就移除一个最老的,所以同时存在的选项卡数量始终不超过变量个数)。开发者可以根据实际项目需求调整变量数量。
需要注意的是,此方案隐含一个前提:用户点击菜单的顺序必须符合“先进先出”规则。如果用户频繁切换回旧选项卡再点开新选项,新选项卡的ID会进入队列,但旧选项卡可能尚未被移除就被重新激活——但代码中已做了判断:若ID已存在则直接激活并return,不会重复创建,因此不会出现重复删除的问题。整体逻辑是自洽的。
若并非必须严格限制选项卡数量,频繁关闭和重新创建TabPanel反而可能带来额外性能开销——每次创建都会触发IFrame重新加载。建议仅在资源确实紧张的场景下采用此方案,或者改用更优雅的队列数据结构(例如直接使用数组实现FIFO),代码会更清晰易维护。
在实际项目开发中,很多开发者会直接使用`removeAll(true)`再逐个添加,但那样会丢失各选项卡的内部状态。而上述代码的优势在于只关闭最旧的选项卡,保留其他选项卡的现场,属于一种轻量且实用的解决方案。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
如何用拖放在Flask看板应用中更新数据库状态
在Flask看板应用中,通过HTML5拖放API结合前端fetch异步POST请求,将拖拽任务的task_id和target_state发送至后端路由;后端接收JSON后更新数据库并提交事务,实现跨列拖拽时实时更新状态。需注意将事件绑定到容器而非子元素,并在ondragover中阻止默认行为以确保drop触发。
如何用CSS :has()选择器快速实现悬停span显示相邻div
利用CSS的:has()伪类选择器,通过` bar:has(> baz:hover)+ qux`实现悬停内联元素时显示相邻块级容器,解决了传统相邻兄弟选择器无法跨层级匹配的局限,可用于悬停图标显示详情框等交互场景。需注意浏览器兼容性和性能优化,避免过度使用影响渲染效率。
display:block居中段落文本的响应式实现方法
通过`display:block`与`max-width`限制宽度,配合`margin:auto`使段落块水平居中并实现响应式布局;同时用CSS统一控制段落间距,避免脱离文档流,提升可读性与维护性。
JavaScript代码去重:高效避免重复编写的技巧
将重复代码中的变化点提取为参数,利用ES6模板字符串动态生成选择器,可消除重复、保持一致性。注意参数安全性,必要时进行白名单校验;批量化场景可扩展为数组形式;现代框架中更推荐数据驱动或组件化封装替代手动选择器。
使用容器查询单位cqw实现表单输入框相对于祖父容器百分比宽度
利用CSS容器查询单位cqw,表单输入框宽度可直接基于祖父容器计算,绕过中间包装器尺寸干扰,实现简洁响应式布局,无需硬编码或JavaScript,显著降低维护成本,提升嵌套结构下的布局灵活性。
- 热门数据榜
相关攻略
2026-07-09 07:01
2026-07-09 07:01
2026-07-09 07:01
2026-07-09 07:00
2026-07-09 07:00
2026-07-09 07:00
2026-07-09 07:00
2026-07-09 07:00
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

