Extjs 4.2 store.sync()创建/更新

时间:2017-01-02 10:59:20

标签: extjs extjs4.2

我有这家店:

商品

Ext.define('App.mystore', {
extend: 'Ext.data.Store',
model:      'App.mymodel',
autoLoad: false,
proxy: {
    type: 'ajax',
    api: {
        read: 'read.php',
        create: 'create.php',
        update: 'update.php'
    },
    reader: {
        type: 'json',
        root: 'data',
        totalProperty: 'total',
        successProperty: 'success'
    },
    writer: {
        root: 'records',
        encode: true,
        writeAllFields: false
    }
}
});

这个商店是一个Grid,点击一个按钮我可以添加一行,如果我选择一些先前的(在数据库中插入)行,我可以编辑它的数据。

完成所有操作后,我点击一个按钮将商店与数据库同步。

此按钮使用以下代码调用函数:

onSave:function(){
    var Store=Ext.ComponentQuery.query('mygrid')[0].getStore();

    Store.getProxy().setExtraParam('param1',this.Param1);
    Store.getProxy().setExtraParam('param2',this.Param2);
    Store.getProxy().setExtraParam('param3',this.Param3);

    Store.sync({
        scope:this,
        success : function(response){
            Ext.Msg.show({ 
                title: 'Information', 
                msg: 'All OK',
                icon: Ext.MessageBox.INFO,
                buttons: Ext.Msg.OK
            });
        },
        failure:function(response){
            Ext.Msg.show({ 
                title: 'warning',
                msg: 'Error',
                icon: Ext.MessageBox.WARNING,
                buttons: Ext.Msg.OK
            });
        }
    });
},

我可以分两步同步商店,首先是新记录,然后修改记录吗?因为我需要知道两个动作是否成功。因为用户可以添加新行并编辑一些旧行。

1 个答案:

答案 0 :(得分:0)

商店" beforesync"事件在这里可能有用。第一个参数是一个操作类型为键的对象,操作列表为值。因此,您可能能够操纵将要执行的操作。