在ExtJS自定义视图中访问根属性?/重复组件

在ExtJS自定义视图中访问根属性?/重复组件,extjs,extjs6-classic,Extjs,Extjs6 Classic,出于测试目的,我创建了两个视图。需要另一个视图的视图。现在我希望人们能够作为一个选项卡多次打开组件,所以我显然必须为组件内部的每个选项卡和元素分配唯一的ID,对吗 我的问题是,如何从docketItems对象访问视图中的一个根属性? 在下面的代码中,它将在id:'accountSearchField'+this.varindex,处导致未定义的this.varindex错误。varindex是从另一个组件动态分配的。(我在下面的示例代码中对其进行了硬编码) 请注意,我不知道确切的ID,因此无法使

出于测试目的,我创建了两个视图。需要另一个视图的视图。现在我希望人们能够作为一个选项卡多次打开组件,所以我显然必须为组件内部的每个选项卡和元素分配唯一的ID,对吗

我的问题是,如何从docketItems对象访问视图中的一个根属性? 在下面的代码中,它将在
id:'accountSearchField'+this.varindex,
处导致未定义的
this.varindex
错误。varindex是从另一个组件动态分配的。(我在下面的示例代码中对其进行了硬编码)

请注意,我不知道确切的ID,因此无法使用
Ext.getCmp
之类的内容。我可以使用
Ext.ComponentQuery.query('searchAccount')
,但也许有更好的方法

下面列出的是我的主要组件所需的部分代码

Ext.define('cp.views.search.Account', {     
    extend: 'Ext.panel.Panel',       
    xtype: 'searchAccount',
    varindex: "uniqueid_assigned_by_main_component",
    listeners: {
        beforerender: function(){
            this.id = 'panelSearchAccount' + this.varindex
        }
    },
    items: [
        {
            xtype: 'grid',
            store: {
                type: 'Account'
            },
            id: 'searchAccount' + this.varindex,
            columns: [
                ///
            ],
            dockedItems: [
            {
                xtype: 'fieldset',
                items: [
                    {
                        id: 'accountSearchField' + this.varindex,
                        xtype: 'searchfield'
                    }
                ]
            }]
        }
    ]
});

事实上我可能已经弄明白了。我只是简单地将项目移动到beforerender事件中,并使用了
this.add()
函数。

实际上我可能已经找到了答案。我只是将项目移动到beforerender事件中,并使用了
this.add()
函数。

Ext将为DOM元素生成id,并确保它们对页面是唯一的,因此使用id属性引用组件是不常见的。有两个用于此目的的配置属性,itemId和reference

可以使用多种方法从父容器或全局获取组件

此外,Ext.app.Controllers可以使用配置获取组件。这些方法使用字符串。itemId的选择器是以“#”为前缀的itemId(例如“#itemId”)。使用itemId配置组件时,不指定“#”

随着ExtJS5中对MVVM的支持而引入,标识符对于组件的容器或ViewController是唯一的。可以使用从组件或ViewController中引用来获取组件。lookupReference方法只将引用作为输入,因此不需要前缀

如果希望能够引用与特定模型实例(帐户)关联的组件,则可以使用定义组件类,并在将每个实例添加到容器时配置引用或itemId

for (var i = 0, ilen = accountModels.length; i < ilen; ++i) {
   container.add({
      xtype: 'accountpanel',
      reference: accountModel[i].get('accountNumber')
   });
}

Ext将为DOM元素生成id,并确保它们对页面是唯一的,因此使用id属性来引用组件是不常见的。有两个用于此目的的配置属性,itemId和reference

可以使用多种方法从父容器或全局获取组件

此外,Ext.app.Controllers可以使用配置获取组件。这些方法使用字符串。itemId的选择器是以“#”为前缀的itemId(例如“#itemId”)。使用itemId配置组件时,不指定“#”

随着ExtJS5中对MVVM的支持而引入,标识符对于组件的容器或ViewController是唯一的。可以使用从组件或ViewController中引用来获取组件。lookupReference方法只将引用作为输入,因此不需要前缀

如果希望能够引用与特定模型实例(帐户)关联的组件,则可以使用定义组件类,并在将每个实例添加到容器时配置引用或itemId

for (var i = 0, ilen = accountModels.length; i < ilen; ++i) {
   container.add({
      xtype: 'accountpanel',
      reference: accountModel[i].get('accountNumber')
   });
}