ExtJs通过以字符串开头的id选择组件

ExtJs通过以字符串开头的id选择组件,extjs,Extjs,我需要通过单击按钮动态创建一个组件。我的限制是: 它将有一个Id,以一个固定的字符串开始,比如'myComp_2;',然后是一个随机数 任何时候,只有一个组件的id以“myComp\u xxx”开头 因此,在创建组件之前,我必须检查之前是否创建了任何组件并将其删除。。。我的问题从这里开始。Ext.getCmp需要特定的id。但是我只有一个固定的字符串:myComp\ux 有没有办法让组件在创建之前创建 提前谢谢,对我的英语很抱歉。我想你要找的是 例: 您需要使用以下选项: 对于extjs4.X,

我需要通过单击按钮动态创建一个组件。我的限制是:

它将有一个Id,以一个固定的字符串开始,比如'myComp_2;',然后是一个随机数 任何时候,只有一个组件的id以“myComp\u xxx”开头 因此,在创建组件之前,我必须检查之前是否创建了任何组件并将其删除。。。我的问题从这里开始。Ext.getCmp需要特定的id。但是我只有一个固定的字符串:myComp\ux

有没有办法让组件在创建之前创建


提前谢谢,对我的英语很抱歉。

我想你要找的是

例:

您需要使用以下选项:

对于extjs4.X,使用Ext.ComponentQuery.query'*[id^=myComp_xxx]

对于extjs3.X,您可以使用以下

var el = Ext.query('*[id^=myComp_xxx]');
var cmp = Ext.getCmp(el.id);
或者这一个我个人没有尝试过,但我认为如果组件是您可以访问的组件的子组件,那么它应该可以工作,然后:

var el=父公司融资,btn


并在按钮配置中设置一个名为action:btn的属性。

如果您知道要在何处创建组件,另一种选择是使用up/down方法

例如,如果您有一个按钮,并且希望获取包含在单击处理程序中的表单,则可以执行以下操作:

function myClickHandler(btn) {
     var form = btn.up('form');

     //do something with form 
}

听起来你应该使用普通的组件查询工具-一般来说,使用id不是一个好主意。你可以通过xtype和itemId进行查询,你可以手动分配

以下

Ext.ComponentQuery.query('grid form');  
会在某处找到所有包含表格的xtype grid

Ext.ComponentQuery.query('grid #okButton');  
然而,这里说的是查找具有itemId“okButton”的网格

您可以将其嵌套到您需要的任何级别,并使用其他操作符来更具体地说明问题,正如其他人正确指出的那样,您可以使用组件上下操作来完成与当前组件相关的操作。值得注意的是,当你上下使用时,你只会得到第一个数组,而不是得到一个包含所有结果的数组

有关更多信息,请参阅此


另请参阅第6点,以了解我尝试使用dom元素的更多原因。不是组件。我可以从这里得到组件吗?我想Ext.getdom_元素会给你组件实际上,不。返回DOM元素。我想我在这个问题上不是很清楚。“xxx”部分未知。这是一个随机数..但是为什么不给组件一个随机ID呢?如果只显示一次?您没有义务让ExtJS处理ID生成。您是在告诉我,我应该摆脱随机部分,创建具有特定ID的组件吗?是的,这确实是我想要告诉您的。或者您可以填充另一个属性并查询组件。如果它在一个面板中,你可以这样查询:panel.down'field[name=myName];
Ext.ComponentQuery.query('grid form');  
Ext.ComponentQuery.query('grid #okButton');