【问题标题】:Adding dynamic fields on click of button in extjs 4在 extjs 4 中单击按钮时添加动态字段
【发布时间】:2013-01-21 17:56:18
【问题描述】:

我想在 extjs 4 中单击按钮时动态添加一个字段。我所做的是在添加按钮上添加一个 onchange 函数,并在该函数中编写添加文本字段逻辑。 这是我的代码。

Ext.define('AM.view.user.Edit', {
    extend: 'Ext.window.Window',
    alias : 'widget.useredit',
    requires: ['Ext.form.Panel'],
    title : 'Edit User',
    layout: 'fit',
    autoShow: true,
    height: 300,
    width: 280,
    id : 'mainPanel',
        initComponent: function() {
        this.items = [
            {
                xtype: 'form',
                id: 'dyForm',
                padding: '5 5 0 5',
                border: false,
                style: 'background-color: #fff;',

                items: [
                    {
                        xtype: 'textfield',
                        name : 'name',
                        fieldLabel: 'Name'
                    },
                    {
                        xtype: 'textfield',
                        name : 'email',
                        fieldLabel: 'Email'
                    }
                ]
            }
        ];

        this.buttons = [
            {
                text: 'Save',
                action: 'save'
            },
           {
                text: 'Add',
                scope: this,
                handler: this.onChange
            },
           ];

        this.callParent(arguments);
    },
    onChange : function(){alert('test');
         var form=Ext.getCmp("mainPanel");
        form.items.add(Ext.create("Ext.form.field.Text", {fieldLabel:"First Name"}));
        form.doLayout(true);
   }
});

我还希望在编辑此表单时将数据加载到我动态创建的新字段中。

【问题讨论】:

    标签: extjs extjs4 extjs-mvc


    【解决方案1】:

    onChange 函数更改为

    onChange : function(btn){
        // var form=Ext.getCmp("mainPanel");
        var form = btn.up('window').down('form'); // this is a better approach
        form.add(Ext.create("Ext.form.field.Text", {fieldLabel:"First Name"}));
    }
    

    应该这样做。您将该字段直接添加到您应该使用表单组件提供的add 方法的集合中。

    JSFiddle

    【讨论】:

    • @anupkumar 是的,向上导航有一个错字。查看我的编辑和工作示例
    • 我可以在 extjs 中更改组合框吗?
    • +1 表示 up 和 down 方法。 @sra 恭喜你本周达到 10k :)
    • @anupkumar 是的,使用 select 事件。
    • 对不起,但我已经使用了 select 事件但没有得到它。如何在 select 里面创建一个表单元素,就像你为按钮写的一样“var form = btn.up('window') .down('form');"
    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    相关资源
    最近更新 更多