【问题标题】:How to get values of DisplayField from Form Extjs 6.0.2?如何从 Form Extjs 6.0.2 中获取 DisplayField 的值?
【发布时间】:2018-08-07 13:18:01
【问题描述】:

我正在尝试使用 this.up('form').getValues() 从表单中获取 dispalyfield 的值。但我得到了空对象。

有人可以帮我解决这个问题吗? Extjs 版本 6.0.2

这里是我试过的示例代码:

Ext.create('Ext.form.Panel', {
    renderTo: Ext.getBody(),
    width: 175,
    height: 150,
    bodyPadding: 10,
    title: 'Final Score',
    items: [{
        xtype: 'displayfield',
        fieldLabel: 'Home',
        name: 'home_score',
        value: '10'
    }, {
        xtype: 'displayfield',
        fieldLabel: 'Visitor',
        name: 'visitor_score',
        value: '11'
    }],
    buttons: [{
        text: 'Update',
        handler: function (button, e) {
            var form = this.up('form');
            var values = form.getValues();

            Ext.log({
                msg: "values: ",
                values
            });

            Ext.log({
                msg: "Home: " + values.home_score
            });

            Ext.log({
                msg: "Visitor: " + values.visitor_score
            });

        }
    }]
});

注意:显示字段 ----- Ext.getCmp("someID").getValue() 我试过并获得了价值。但我想从没有 getCmp 和 ID 的表单中获取和设置 dispalyfield 的值。

【问题讨论】:

  • 你是如何设置值的?该值永远不会改变,所以从那里获取它。
  • @Evan 你可以看到显示字段,我在创建字段时设置值
  • 是的,这就是我的观点。
  • 是的,但是 form.getValues() 正在返回“textfield”的值对象,而不是“displayfield”。如果我将 xtype 更改为“textfield”,我将获得该值。但我希望该字段作为显示字段。
  • Docs: "一个仅显示的文本字段,未经验证且未提交。当您想要显示表单加载数据中的值但不想让用户编辑或提交该值。”链接(开头):docs.sencha.com/extjs/6.0.0/classic/Ext.form.field.Display.html

标签: javascript forms extjs extjs6-classic


【解决方案1】:

为此,您需要使用form.getForm(),它将返回Ext.form.Basic 表单。现在您需要使用getFieldValues() 获取值并使用setValues() 设置字段值。

在这个Fiddle中,我使用上述方法创建了一个演示。

代码片段

Ext.application({
    name: 'Fiddle',

    launch: function () {
        Ext.create('Ext.form.Panel', {
            renderTo: Ext.getBody(),
            width: 175,
            height: 150,
            bodyPadding: 10,
            title: 'Final Score',
            items: [{
                xtype: 'displayfield',
                fieldLabel: 'Home',
                name: 'home_score',
                value: '10'
            }, {
                xtype: 'displayfield',
                fieldLabel: 'Visitor',
                name: 'visitor_score',
                value: '11'
            }],
            buttons: [{
                text: 'Update',
                handler: function (button, e) {
                    var form = this.up('form').getForm(),
                        values = form.getFieldValues();

                    Ext.log({
                        msg: "values: " + Ext.encode(values)
                    });

                    Ext.log({
                        msg: "Home: " + values.home_score
                    });

                    Ext.log({
                        msg: "Visitor: " + values.visitor_score
                    });

                    form.setValues({
                        home_score: 100,
                        visitor_score: 111
                    });
                }
            }]
        });
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多