extjs - 在 Extjs 中使用 Id 和 itemId 访问组件

标签 extjs sencha-architect

在 ExtJs 最佳实践中,我不使用 Id 来访问 Ext 组件,而是使用 ItemId,我是使用 ItemID 访问组件的新手。 , 有没有人可以帮助我了解默认语法或访问组件的方式。

同样在消息框中单击是,我需要禁用屏蔽页面中的某些组件,这是否可以在 ItemID 的帮助下实现?请解释。

使用时的感觉ItemiD它可能会返回元素/组件数组,因此如果需要获取确切的组件,我需要再次迭代。我也有这个疑问....

最佳答案

id 和 itemId 之间的基本区别是

当您为组件使用 id 时,此组件必须有一个实例 , 如果您创建另一个具有相同 ID 的实例 ,您将遇到问题,因为 DOM 被混淆了。

当您使用 itemId 时,它应该仅在组件的直接容器中是唯一的。组件的容器维护一个子 ID 列表。

所以最好的做法是使用 itemId 而不是 id

现在如何访问?

如果你使用 id
Ext.getCmp('id')
或者
document.getElementById('id')
或者
Ext.ComponentQuery.query("#id")[0]
如果您使用 itemId
parentContainer.getComponent('child_itemId') ,

引用下面的例子

例如

 var parentContainer= Ext.create('Ext.panel.Panel', {
         initComponent: function(){
            Ext.applyIf(me, {
               //childrens
               items: [{
                          xtype:'textfield',
                          itemId:'text'
                       },
                       {
                           xtype:'panel',
                           itemId:'childpanel',
                           items:[
                                 {
                                     xtype:'combobox',
                                     itemId:'combo'
                                 }
                           ]
                       }]
            });
            this.callParent(arguments);
        },
        renderTo:Ext.getBody()

    })

在上面的例子中

用于访问文本字段使用
parentContainer.getComponent('text');

用于访问组合框使用
parentContainer.getComponent('childpanel').getComponent('combo');

或者
Ext.ComponentQuery.query("#combo")[0];

这将在页面中返回带有 id 组合的项目数组
对于这些你应该使用唯一的 itemId 这样你就会得到你正在搜索的第一个项目

或者
parentContainer.queryById('combo');

您也可以使用 Ext.util.MixedCollection
        var fields = new Ext.util.MixedCollection();
        fields.addAll(parentContianer.query('[isFormField]'));
        var Combo = fields.get('combo');

关于extjs - 在 Extjs 中使用 Id 和 itemId 访问组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29404695/

相关文章:

Extjs 组合默认值?

extjs - 嵌套的可扩展网格 - 内部网格不会正确折叠和展开

extjs - 如何更新 extjs 中的 tabPanel 项目标题(sencha touch)

sencha-touch-2 - 如何在 Sencha Architect 2 中添加 'Ext.require'

sencha-touch - Sencha 隐藏显示按钮

javascript - Ext JS 创建自定义组件(类)

sencha-touch-2 - 动画视口(viewport)删除

javascript - CSS 样式不适用于 ExtJS 按钮

android - SenCha Touch 能全屏还是不能退出?

extjs - 使用 ExtJS 4 的动态模型