如何提交使用ExtJS的下一个店一个形式?(How do I submit a form using

2019-07-30 20:15发布

有没有办法有一个表单提交ExtJS的4下创建一个保存的对象?

我觉得奇怪,我说,网格各地专卖店机制完全建立,我看不出有什么明显的方式堵塞形式走进一家商店。 但我最有可能只是失去了一些东西。

Answer 1:

您可以在表格模型实例添加到商店提交使用此代码:

onSaveClick: function()
{
    var iForm         = this.getFormPanel().getForm(),
        iValues       = iForm.getValues(),
        iStore        = this.getTasksStore();

    iStore.add( iValues );
},

这是一个MVC控制器内,所以this是控制器。

对于模型编辑,你可以“绑定”形式使用一个模型实例loadRecord

iFormPanel.loadRecord( this.selection );

然后,您可以使用更新模型实例updateRecord()

iFormPanel.getForm().updateRecord();

只是为了好玩(和它可能会帮助一些),它类似于下面的代码:

onSaveClick: function()
{
    var iForm         = this.getFormPanel().getForm(),
        iRecord       = iForm.getRecord(),
        iValues       = iForm.getValues();

    iRecord.set ( iValues );        
},

如果你的小店是具有autoSync: true 。 一个更新(或创建)调用将通过配置的代理进行。 如果没有自动同步,你必须手动同步您的商店。



Answer 2:

你也可以继承Ext.form.action.Action提供负载/保存动作的形式来存储上进行。 唯一的小问题,就是不知何故没有“正式”的方式来选择Ext.form.Basic任何非标准的行动,所以我建议一个非官方的覆盖:

Ext.define('Ext.form.Advanced', {
    override: 'Ext.form.Basic',

    submit: function(options) {
        var me = this,
            action;

        options = options              || {};
        action  = options.submitAction || me.submitAction;

        if ( action ) {
            return me.doAction(action, options);
        }
        else {
            return me.callParent(arguments);
        }
    },

    load: function(options) {
        var me = this,
            action;

        options = options            || {};
        action  = options.loadAction || me.loadAction;

        if ( action ) {
            return me.doAction(action, options);
        }
        else {
            return me.callParent(arguments);
        }
    }
});

于是,已经创造了你的需要,你可以再表单面板中使用它们的操作:

Ext.define('My.form.Panel', {
    extend: 'Ext.form.Panel',

    requires: [ 'Ext.form.Advanced' ],

    loadAction: 'My.load.Action',
    submitAction: 'My.submit.Action',

    ...
});

还有其他的方法和快捷方式,虽然。



文章来源: How do I submit a form using a store under ExtJs?