Extjs4 为什么Ext.getCmp是一种不好的做法?在所有情况下都可以用itemId替换吗?

Extjs4 为什么Ext.getCmp是一种不好的做法?在所有情况下都可以用itemId替换吗?,extjs4,Extjs4,我已经使用ExtJS有一段时间了,并且在实例化组件时总是使用“Ext.getCmp”,但大多数时候我读到这是一种不好的做法,应该使用“itemId”,所以我想知道为什么“itemId”比“Ext.getCmp”好,以及是否可以一直使用。 此外,我还遇到过我不能(或不知道如何)使用“itemId”的例子。 例子: 我可以使用“Ext.getCmp”设置按钮的disabled属性: 但使用“itemId”时,我得到错误:“对象引用未设置为对象的实例” 您必须按项目id获取按钮元素,然后调用setDi

我已经使用ExtJS有一段时间了,并且在实例化组件时总是使用“Ext.getCmp”,但大多数时候我读到这是一种不好的做法,应该使用“itemId”,所以我想知道为什么“itemId”比“Ext.getCmp”好,以及是否可以一直使用。 此外,我还遇到过我不能(或不知道如何)使用“itemId”的例子。 例子: 我可以使用“Ext.getCmp”设置按钮的disabled属性:

但使用“itemId”时,我得到错误:“对象引用未设置为对象的实例”


您必须按项目id获取按钮元素,然后调用setDisabled

Ext.ComponentQuery.query('#btnMyButton').setDisabled(true);
你们可以参考下面的链接来了解更多关于id和itemId的信息

    btnMyButton.setDisabled(true);
Ext.ComponentQuery.query('#btnMyButton').setDisabled(true);