使用itemId获取组件Extjs
我在选项卡渲染方面遇到问题。选项卡的内容经常混淆,因为我在所有选项卡上使用了相同的组件,并且该组件具有id为的子组件。由于id在所有面板上都显示相同,所以经常混淆的组件。我现在使用的是itemId而不是id,并且选项卡得到了正确的渲染。 现在我面临另一个问题。最初,我使用Ext.getCmp(id)获取控制器中的组件。现在ID被itemId替换,我使用以下内容:使用itemId获取组件Extjs,extjs,Extjs,我在选项卡渲染方面遇到问题。选项卡的内容经常混淆,因为我在所有选项卡上使用了相同的组件,并且该组件具有id为的子组件。由于id在所有面板上都显示相同,所以经常混淆的组件。我现在使用的是itemId而不是id,并且选项卡得到了正确的渲染。 现在我面临另一个问题。最初,我使用Ext.getCmp(id)获取控制器中的组件。现在ID被itemId替换,我使用以下内容: Ext.getCmp(id).getComponent(itemId) 视图中有一个很深的组件嵌套,所有中间组件都有itemId。在上
Ext.getCmp(id).getComponent(itemId)代码>
视图中有一个很深的组件嵌套,所有中间组件都有itemId。在上面的语句中,当我继续提取更深层次的组件时,这些语句继续扩展,如下所示:
Ext.getCmp(id).getComponent(itemId1).getComponent(itemId2).getComponent(....;
我使用的语句正确吗?有没有更好的速记方法来达到这个目的
请给出建议。基本上您使用它的方式是正确的,因为itemId
仅在组件级别是唯一的(至少它必须是唯一的)。但是,正如您可能看到的那样,这会有点难看,因此我严格建议您使用Ext.ComponentQuery
或它的一个实现up()
和down()
,这两个实现都适用于大多数组件。默认情况下,Ext.ComponentQuery
将查看所有实例化组件up()
和down()
将从执行它们的组件开始,仅遍历现有组件树。而且up()
和down()
始终返回第一个匹配项,其中Ext.ComponentQuery
始终为您提供一个数组
两者都接受相同的查询字符串,可以用不同的方式编写(这里我建议您阅读)
以下是一个示例:
Ext.getCmp(íd).getComponent(itemId1).getComponent(itemId2)
希望您正在使用面板(可以是任何组件)
Ext.ComponentQuery.query('panel[id=yourId]>panel[itemId=yourId]>panel[itemId=yourId]);
假设您使用的是MVC,因此所有组件都是定制的(有自己的XType)。因此,如果您知道,您只有一个带有此itemId
的“yourcustompanel”实例,您可以简单地调用:
Ext.ComponentQuery.query('yourcustompanel[itemId=yourId]')//注意,您总是会得到一个数组
基本上您使用它的方式是正确的,因为itemId
仅在组件级别是唯一的(至少它必须是唯一的)。但是,正如您可能看到的那样,这会有点难看,因此我严格建议您使用Ext.ComponentQuery
或它的一个实现up()
和down()
,这两个实现都适用于大多数组件。默认情况下,Ext.ComponentQuery
将查看所有实例化组件up()
和down()
将从执行它们的组件开始,仅遍历现有组件树。而且up()
和down()
始终返回第一个匹配项,其中Ext.ComponentQuery
始终为您提供一个数组
两者都接受相同的查询字符串,可以用不同的方式编写(这里我建议您阅读)
以下是一个示例:
Ext.getCmp(íd).getComponent(itemId1).getComponent(itemId2)
希望您正在使用面板(可以是任何组件)
Ext.ComponentQuery.query('panel[id=yourId]>panel[itemId=yourId]>panel[itemId=yourId]);
假设您使用的是MVC,因此所有组件都是定制的(有自己的XType)。因此,如果您知道,您只有一个带有此itemId
的“yourcustompanel”实例,您可以简单地调用:
Ext.ComponentQuery.query('yourcustompanel[itemId=yourId]')//注意,您总是会得到一个数组
您可以使用Ext.ComponentQuery.query(..)或down()或up()来获取所引用的组件
如果您想在某个组件(比如容器)中获取组件(比如按钮),可以使用
var button = Ext.ComponentQuery.query('button[type=messageButton]', this);
var button = this.query('button[type=messageButton]');
在上文中,“this”指的是容器范围
或者你可以使用
var button = Ext.ComponentQuery.query('button[type=messageButton]', this);
var button = this.query('button[type=messageButton]');
在上文中,“this”也指容器范围
希望这对您有所帮助。您可以使用Ext.ComponentQuery.query(..)或down()或up()来获取所引用的组件
如果您想在某个组件(比如容器)中获取组件(比如按钮),可以使用
var button = Ext.ComponentQuery.query('button[type=messageButton]', this);
var button = this.query('button[type=messageButton]');
在上文中,“this”指的是容器范围
或者你可以使用
var button = Ext.ComponentQuery.query('button[type=messageButton]', this);
var button = this.query('button[type=messageButton]');
在上文中,“this”也指容器范围
希望这对您有所帮助。谢谢您!这就是我需要的。我甚至不必通过组件的完整路径来追踪组件…谢谢你Sreek521!这就是我需要的。我甚至不必通过组件的完整路径来跟踪它。。。