Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用itemId获取组件Extjs_Extjs - Fatal编程技术网

使用itemId获取组件Extjs

使用itemId获取组件Extjs,extjs,Extjs,我在选项卡渲染方面遇到问题。选项卡的内容经常混淆,因为我在所有选项卡上使用了相同的组件,并且该组件具有id为的子组件。由于id在所有面板上都显示相同,所以经常混淆的组件。我现在使用的是itemId而不是id,并且选项卡得到了正确的渲染。 现在我面临另一个问题。最初,我使用Ext.getCmp(id)获取控制器中的组件。现在ID被itemId替换,我使用以下内容: Ext.getCmp(id).getComponent(itemId) 视图中有一个很深的组件嵌套,所有中间组件都有itemId。在上

我在选项卡渲染方面遇到问题。选项卡的内容经常混淆,因为我在所有选项卡上使用了相同的组件,并且该组件具有id为的子组件。由于id在所有面板上都显示相同,所以经常混淆的组件。我现在使用的是itemId而不是id,并且选项卡得到了正确的渲染。 现在我面临另一个问题。最初,我使用Ext.getCmp(id)获取控制器中的组件。现在ID被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!这就是我需要的。我甚至不必通过组件的完整路径来跟踪它。。。