ExtJS商店添加调用既创建和销毁

                this.store = Ext.create('Ext.data.Store', {
                fields: [
                    'id',
                    'name',
                    'Address',
                    'status',
                ],
                autoLoad: auto,
                autoSync: auto,
                remoteSort: true,
                proxy: {
                    type: 'ajax',
                    api: {
                        create: '../../create.php',
                        read: '../../read.php',
                        destroy: '../../destroy.php',
                        update: '../../update.php'
                    },
                    reader: {
                        type: 'json',
                        root: '__data',
                        totalProperty: 'grandTotal'
                    },
                    writer: {
                        type: 'json',
                        root: '__data'
                    },
                    listeners: {
                        exception: function( t, response, op ) {
                            var _da = Ext.decode( response.responseText );
                            if( _da ) {
                                if( _da.message == "ExistingName" ) {
                                    _da.message = Locale.gettext('name already exists');
                                    } else {
                                        frm = _self.subnetEditor.down('form');
                                        name_field = frm.down('textfield[name=name]');
                                    }
                                    name_field.markInvalid(Locale.gettext(_da.message));
                                }
                                showMsg( _da.success, _da.message );
                                if( op.action == 'create' || op.action == 'update' ) {
                                    _self.store.rejectChanges();
                                    _self.store.load();
                                }
                            }
                        }
                    }
                }
            });

这是调用四个php文件来执行CRUD的商店,以及一些侦听器来处理重复的名称。

        removeSelected: function() {
        var _self = this;
        Ext.Msg.show( {
            title: Locale.gettext( 'Remove selected?' ),
            msg: Locale.gettext( 'Are you sure you want to remove ALL SELECTED items?' ),
            icon: Ext.Msg.WARNING,
            buttons: Ext.Msg.OKCANCEL,
            buttonAlign: 'right',
            fn: function( button ) {
                if( button == 'ok' ) {
                    var grid = _self.down( 'grid' );
                    if( grid ) {
                        var selection = grid.getSelectionModel().getSelection();
                        if( selection.length ) {
                            _self.store.remove( selection );
                            if( _self.useGridRowEditing ) {
                                _self.store.sync();
                            }
                        }
                    }
                }
            }
        } );
    }

这里是删除功能将删除选定的项目,我有store.add(项目)添加记录。 但问题是如果我运行remove函数,然后store.add添加任何项目,store.add将一起触发create和destroy。 第二次销毁会在我运行remove函数时第一次发布确切的数据。 我想,store.add只会在代理中调用create api,但为什么会调用destroy?

我看到删除引发异常。 如果抛出异常,这是否意味着remove操作仍处于等待状态? 所以它批量添加和删除在一起?


这不是由ExtJS引起的,它会导致服务器响应“[null]”。 null数组被认为是一个异常,我猜这个异常会导致请求变为挂起。

链接地址: http://www.djcxy.com/p/80029.html

上一篇: ExtJS store add calls both create and destroy

下一篇: Store not syncing when sync function is overridden Sencha Touch 2.3