我有标签渲染的问题.用于混淆的选项卡的内容因为我在所有选项卡上使用相同的组件,并且组件具有带id的子组件.由于id在所有面板上看起来都相同,因此用于混淆的组件.我现在使用itemId而不是id,并且标签正在正确呈现.现在我面临另一个问题.最初我使用Ext.getCmp(id)来获取控制器中的组件.现在ids被itemId取代,我使用以下内容:Ext.getCmp(íd).getComponent(itemId);
视图中有一个深层嵌套组件,所有中间组件都有itemId.通过上面的语句,当我继续获取更深层次的组件时,语句继续扩展如下:
Ext.getCmp(ID).getComponent(itemId1).getComponent(itemId2).getComponent(....;
我是否正确使用了该声明?是否有更好的速记方法来达到目的?
请指教.
sra*_*sra 10
基本上你以正确的方式使用它,因为a itemId只在组件级别是唯一的(至少它必须).但正如您可能会看到这会变得有点难看,因此我严格建议您使用Ext.ComponentQuery或其中一个实现,up()并且down()它们都可用于大多数组件.当Ext.ComponentQuery每默认情况下会去翻所有实例化的组件up(),并down()会于它们执行的组件开始,仅通过现有的组件树行走.此外up(),down()始终返回第一个匹配,Ext.ComponentQuery始终显示一个数组.
两者都接受可以用各种方式编写的相同查询字符串(这里我建议你阅读文档)
这是一个例子:
Ext.getCmp(íd).getComponent(itemId1).getComponent(itemId2)
Run Code Online (Sandbox Code Playgroud)
期待你正在使用面板(它可以是任何组件)
Ext.ComponentQuery.query('panel[id=yourId]>panel[itemId=yourId]>panel[itemId=yourId]');
Run Code Online (Sandbox Code Playgroud)
假设您正在使用MVC,因此您的所有组件都是自定义的(具有自己的xtypes).所以如果你知道,你只有一个'yourcustompanel'实例,itemId你可以简单地调用:
Ext.ComponentQuery.query('yourcustompanel[itemId=yourId]') // note you get always a array
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用Ext.ComponentQuery.query(..)或down()或up()来获取您引用的组件.
如果您想在某个组件(例如容器内)中获取组件(例如按钮),则可以使用
var button = Ext.ComponentQuery.query('button[type=messageButton]', this);
Run Code Online (Sandbox Code Playgroud)
在上面'this'指的是容器范围.
或者你可以使用
var button = this.query('button[type=messageButton]');
Run Code Online (Sandbox Code Playgroud)
在上面也'this'指的是容器范围.
希望这可以帮助你..