ExtJs:将表单字段附加到内存中的对象

ExtJs:将表单字段附加到内存中的对象,extjs,Extjs,我不理解ExtJs的一些关键习惯用法,所以这个问题是关于如何引导我做到这一点的。我想我试图以错误的方式使用ExtJs 我正在编写一个应用程序,允许用户添加动态数量的子记录。让我们假设我正在描述一个房间,用户可以单击“添加门”按钮,将一个门模板添加到一个模板列表中,他们可以在其中指定门的详细信息 我将门的细节作为对象保存在内存中,我希望能够将在组合框、文本字段等中选择值的结果与正确对象上的字段相连接。我的计划是能够使用JSON/XHR/REST将对象发送到服务器并将其持久化。我对门对象(例如空间对

我不理解ExtJs的一些关键习惯用法,所以这个问题是关于如何引导我做到这一点的。我想我试图以错误的方式使用ExtJs

我正在编写一个应用程序,允许用户添加动态数量的子记录。让我们假设我正在描述一个房间,用户可以单击“添加门”按钮,将一个门模板添加到一个模板列表中,他们可以在其中指定门的详细信息

我将门的细节作为对象保存在内存中,我希望能够将在组合框、文本字段等中选择值的结果与正确对象上的字段相连接。我的计划是能够使用JSON/XHR/REST将对象发送到服务器并将其持久化。我对门对象(例如空间对象)进行了其他处理,因此希望有自己的处理

到目前为止,我试过的都没用。我可以钩住select事件,但要么我的作用域是字段控件(在这种情况下,我无法访问door对象),要么我的作用域是door对象,我无法访问字段控件的值

我有点困惑,因为ExtJs谈到链接到隐藏字段。但是,对于给定的控件,它似乎只需要一个具有给定id的字段。这意味着我不能有多个门,除非该id的范围限于FormPanel

最后,理想情况下,我会有一个通用的商店,更新颜色组合框的新条目,以便多个门共享。如果有人知道这方面的例子,我将不胜感激

var doorDataEditor = new Ext.form.FormPanel({
    labelWidth: 75,
    width: 350,
    defaultType: 'textfield',
    items: [{
            fieldLabel: 'colour',
            name: 'colour',
            xtype: 'combo',
            store: colourStore,
            displayField: 'name',
            typeAhead: true,
            mode: 'local',
            triggerAction: 'all',
            emptyText: 'Select the colour for this door...',
            selectOnFocus:true,
            value: door.colour,
            listeners:{
                scope: door,
                 'select': function(ev, target) {

                    alert(target.findField('name')); this.colour = target.value;
                } 
            }
        }]});

提前感谢您的帮助。

您使用的是通用DOM事件处理程序格式(ev,target),但这不是通用DOM事件。对于组件,您应该在中查找适当的特定于组件的事件签名。在这种情况下,对于ComboBox is
(Ext.form.ComboBox combo,Ext.data.Record Record,Number index)
您应该能够从
Record.data.color
中获取值(假设您的记录就是这样映射的)。

太好了!这就是我所缺少的洞察力。我没有将事件列表与记录自定义参数相连接。