如何使用JavaScript修改dijit.layout.TabContainer选中标签页的标题
解决dijit.layout.TabContainer修改标签页标题不生效的问题
Dijit组件的属性不支持直接赋值修改,必须调用组件内置的set()方法才会触发视图同步更新,你直接修改title属性仅会修改内存中的属性值,不会触发DOM重绘,因此页面上的标题没有变化。
正确实现代码
按索引修改指定标签页标题
// 拿到对应索引的标签页实例 const targetTab = this.tc.getChildren()[tabIndex]; // 调用set方法更新标题,自动同步到视图 targetTab.set('title', newTabTitle);
修改当前选中的标签页标题
如果不需要按索引定位,可直接获取当前激活的标签页修改:
const selectedTab = this.tc.selectedChildWidget; selectedTab.set('title', newTabTitle);
补充说明
所有Dijit组件的标准属性都遵循get(属性名)/set(属性名, 属性值)的访问规范,直接修改实例属性不会触发属性变更监听逻辑,绑定的DOM视图也就不会同步更新。
如果修改后出现布局错位的情况,可以额外调用this.tc.layout()强制刷新容器布局,绝大多数场景下修改title会自动完成更新不需要额外调用。
内容的提问来源于stack exchange,提问作者bobness
相关产品推荐
相关产品推荐

