如何在Ext.js中通过变量名查找组件并获取其状态值?
解决方案:获取Ext.js组件的disabled/visible属性
一、使用ComponentQuery实现
可以用ComponentQuery,但需要给目标组件添加唯一标识(比如itemId或id),否则无法精准定位。
修改你的示例代码,给btnForm添加itemId:
this.btnForm = new baseComponent.menuItem({ text: 'Form', disabled: true, itemId: 'formMenuItem' // 添加唯一标识 });
然后通过ComponentQuery获取组件并读取属性:
// 方式1:全局查询(推荐用itemId而非id,避免全局冲突) var btnComponent = Ext.ComponentQuery.query('#formMenuItem')[0]; var btnName = btnComponent ? btnComponent.disabled : undefined; // 方式2:如果知道组件的父容器,用容器的down方法更高效 var btnComponent = this.down('#formMenuItem'); var btnName = btnComponent.disabled;
二、更直接的替代方案
1. 直接引用组件(最优)
如果btnForm在当前作用域内(比如你的示例里的this.btnForm),直接读取属性是最简单的方式:
var btnName = this.btnForm.disabled; // 直接获取disabled值
2. 使用Ext.getCmp(不推荐全局id)
如果组件设置了全局唯一的id,可以用Ext.getCmp获取:
this.btnForm = new baseComponent.menuItem({ text: 'Form', disabled: true, id: 'uniqueFormMenuItem' }); var btnComponent = Ext.getCmp('uniqueFormMenuItem'); var btnName = btnComponent.disabled;
注意:全局id容易引发冲突,优先用
itemId配合ComponentQuery或容器的down方法。
3. 通过组件引用关系获取
如果组件是某个容器的子组件,也可以通过父容器的组件引用链获取,比如:
// 假设btnForm是当前组件的子组件 var btnComponent = this.items.get('formMenuItem'); var btnName = btnComponent.disabled;
内容的提问来源于stack exchange,提问作者wonka
相关产品推荐
相关产品推荐

