按下OK按钮后的store.sync仅重新加载商店

时间:2013-12-13 11:47:07

标签: extjs

Ext.define('RouteSeqModel', {
    extend: 'Ext.data.Model',
    fields: [{name: '_id', type: 'number'}, {name: 'Route_Seq' , type: 'int'},'Location_Name','Route_LocationID','Route_ID']
});

var RouteSeqStore = Ext.create('Ext.data.JsonStore', {
    model: 'RouteSeqModel',
    storeId: 'RouteSeqStore',
    autoLoad: false,
    sorters: [{
                property: 'Route_Seq',
                direction: 'ASC'
            }],
    proxy: {
        type: 'ajax',
        url: 'get-routeseq.php',
        api: {
                create: 'insert-routeseq.php',
                //read: 'http://visual04/ModuleGestion/php/Pays.php?action=read',
                update: 'update-routeseq.php',
                //destroy: 'http://visual04/ModuleGestion/php/Pays.php?action=destroy'
            },
        actionMethods: 'POST',
        baseParams: {
                _id : 0,
            },  
        reader: {
            type: 'json',
            idProperty: '_id'
        },
        writer: {
            type: 'json',
            id: '_id'

         }
    }
});
RouteSeqStore.sync({

                success: function(batch) {
                            //var button = Ext.getCmp('BtnRouteSeqRefresh');
                            //button.fireEvent('click', button); //need at here , if not too fast refresh will get the old data
                            grid.setLoading(false);
                            Ext.MessageBox.show({
                                title: "Information",
                                msg: batch.operations[0].request.scope.reader.jsonData["message"],
                                icon: Ext.MessageBox.INFO,
                                buttons: Ext.MessageBox.OK,
                                fn: function(buttonId) {
                                    if (buttonId === "ok") {
                                        //load store at here
                                    }
                                }
                            });  
                },
                    failure: function(batch){
                        //var button = Ext.getCmp('BtnRouteSeqRefresh');
                        //button.fireEvent('click', button); //need at here , if not too fast refresh will get the old data
                        grid.setLoading(false);
                        RouteSeqStore.rejectChanges();
                                   Ext.MessageBox.show({
                                title: "Error",
                                msg: batch.operations[0].request.scope.reader.jsonData["message"],
                                icon: Ext.MessageBox.ERROR,
                                buttons: Ext.MessageBox.OK,
                                fn: function(buttonId) {
                                    if (buttonId === "ok") {
                                        //load store at here
                                    }
                                }
                    });  

                }

            }); 

无论何时调用.sync函数都会自动使用get-routeseq.php加载数据存储区,
是按下OK按钮后才有任何方法只加载数据存储区(按OK后只调用get-routeseq.php)?
我的autoLoad为false,但仍会自动加载数据存储区。

1 个答案:

答案 0 :(得分:0)

我认为您应该使用type: 'rest'并避免代理中的url配置。 像这样:

var RouteSeqStore = Ext.create('Ext.data.JsonStore', {
    model: 'RouteSeqModel',
    storeId: 'RouteSeqStore',
    autoLoad: false,
    sorters: [{
        property: 'Route_Seq',
        direction: 'ASC'
    }],
    proxy: {
        type: 'rest',
        api: {
            create: 'insert-routeseq.php',
            read: 'get-routeseq.php',
            update: 'update-routeseq.php',
            //destroy: 'http://visual04/ModuleGestion/php/Pays.php?action=destroy'
        },
        actionMethods: 'POST',
        baseParams: {
            _id : 0,
        },
        reader: {
            type: 'json',
            idProperty: '_id'
        },
        writer: {
            type: 'json',
            id: '_id'

        }
    }
});

如果您只想加载商店,请使用RouteSeqStore.load()。在商店中进行更改后,请使用RouteSeqStore.sync()