Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExtJS存储添加调用创建和销毁_Javascript_Extjs - Fatal编程技术网

Javascript ExtJS存储添加调用创建和销毁

Javascript ExtJS存储添加调用创建和销毁,javascript,extjs,Javascript,Extjs,这是一个调用四个php文件来执行CRUD的存储,以及一些侦听器来处理重复名称 this.store = Ext.create('Ext.data.Store', { fields: [ 'id', 'name', 'Address', 'status',

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

                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();
                                }
                            }
                        }
                    }
                }
            });
下面是删除功能将删除所选项目,我有store.add(项目)来添加记录。但问题是,如果我运行remove函数,然后store.add添加任何项目,store.add将同时启动create和destroy。第二次销毁将在我第一次运行remove函数时发布准确的数据。 我想store.add只会在代理中调用create api,但是为什么会调用destroy呢


我看到remove抛出了一个异常。如果抛出异常,是否意味着删除操作仍处于挂起状态?所以它会将添加和删除一起批处理?

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

请记住,sync()会将存储区中所有挂起的操作批处理在一起。因此,如果您添加了2条记录,删除了1条记录,并更新了3条记录,那么调用sync()将对这些记录进行批处理together@existdissolve调用remove之后,autosync不应该执行remove吗?如果是这样的话,我会在删除之后添加,应该只剩下一个添加操作了。在我的例子中,我运行1 remove,然后运行1 add,我看到它在remove上调用destroy,在add上调用create和destroy。将请求发送到服务器时是否发生错误?您可以发布执行add()位的代码吗?是的,remove操作总是抛出一个异常:“{”\uuuu data:[null],“success”:true,“message:“remove successful”,“total”:1}”,这会导致它挂起吗?奇怪的是,我的PHP在删除时没有返回任何内容,但它得到了“[null]”。准确地说,这是一个第一个元素等于null的数组。它可能会造成大破坏,因为它不是预期的数据。@Thevs我认为你是对的。为了满足我的好奇心,“浩劫”是什么意思?我的意思是它不是以您的
字段
属性的格式。“大破坏”只是指程序的任何意外行为:)
        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();
                            }
                        }
                    }
                }
            }
        } );
    }