Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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 5.1.1中运行_Javascript_Function_Extjs_Controller - Fatal编程技术网

Javascript 删除函数未在ExtJS 5.1.1中运行

Javascript 删除函数未在ExtJS 5.1.1中运行,javascript,function,extjs,controller,Javascript,Function,Extjs,Controller,我已经定义了一个删除函数,它将删除Gridpanel上的记录,但不知怎么的,它什么都不做!调试过程中出现rec.destroy段,然后跳过整个代码块;没有错误,没有XHR请求,什么都没有 我一直在想,这可能是因为rec变量没有加载,但恰恰相反,它从内部获取了所需的数据 为什么会发生这种情况 doDeleteEmployee: function () { var me = this; var rec = me.getEmployeeForm().getRecord(); Ext.MessageBo

我已经定义了一个删除函数,它将删除Gridpanel上的记录,但不知怎么的,它什么都不做!调试过程中出现
rec.destroy
段,然后跳过整个代码块;没有错误,没有XHR请求,什么都没有

我一直在想,这可能是因为
rec
变量没有加载,但恰恰相反,它从内部获取了所需的数据

为什么会发生这种情况

doDeleteEmployee: function () {
var me = this;
var rec = me.getEmployeeForm().getRecord();
Ext.MessageBox.confirm('Confirm Delete User', 'Are you sure you want to delete user ' + rec.get('firstName') + '?', function (btn) {
    if (btn === 'yes') {
        rec.erase({
                success: function(rec, operation) {
                    console.log('success step one');
                    me.getStore().load();
                    console.log('success step two');
                    Ext.MessageBox.alert('INFO', 'Delete Success');
                },
                failure: function(rec, operation) {
                    console.log('this is failure');
                    Ext.MessageBox.alert('Delete Failure', operation.request.scope.reader.jsonData.msg);
                }
        });
    }
});
}

编辑(就在@scebotari66的建议之后):

定义擦除方法后仍会出现错误。(我已经更新了上面的“doDeleteEmployee”函数)

我有了擦除的想法,但这是调试过程后的结果:
1.在调试过程中,会出现
rec.erase
并跳过其中的剩余块。当我试着一步一步走的时候,我注意到了;它保留正确的数据,直到
afterDrop()
函数的ext debug.js。
2.我已经定义了两个console.log(您将在上面注意到),它只显示“成功第一步”。
3.在Dev工具的Network选项卡中,有XHR请求,但它以某种方式使用HTTP:POST方法发送请求,并得到200-OK作为响应。所以我想,也许我在模型上做错了什么,并在下面添加了

错误:

Uncaught TypeError: Cannot read property 'indexOf' of undefined
型号:

Ext.define('Employee.model.EmployeeMdl', {
        extend: 'Ext.data.Model',
    requires: ['Ext.data.identifier.Sequential'],
    identifier: {
        type: 'sequential',
        seed: 1223334477,
        increment: 10
    },
    fields: [
        {name: 'firstName', type: 'string'},
        {name: 'lastName', type: 'string'},
        {name: 'email', type: 'string'}
    ],
    idProperty: 'id',
    proxy: {
        type: 'ajax',
        headers: {
            'Content-Type': 'application/json'      
        },
        api: {
            read: 'http://...0.223:8223/orest/employee',
            create: 'http://...0.223:8223/orest/employee',
            update: 'http://...0.223:8223/orest/employee',
            destroy: 'http://...0.223:8223/orest/employee'
        },
        reader: {
            type: 'json'
        },
        writer: {
            type: 'json',
            allowSingle: true,
            encode: false,
            writeAllFields: true
        }
    }
});

如果要通过代理销毁记录,应使用以下方法

该方法由Ext.data.Model从Ext.Base继承,在处理模型时通常不直接调用

调用此方法以清理对象及其资源。之后 调用此方法时,不应进一步使用该对象

已更新

  • 它跳过了代码的其余部分,因为您得到了错误
  • 如果返回成功响应,将调用
    success
    回调
  • 它发送
    POST
    请求是正常的。这就是ajax代理的工作原理。如果您想自定义它,您需要查看配置
  • 操作名称到HTTP请求方法的映射。在基本的AjaxProxy中 对于“读取”操作,将其设置为“获取”,对于“创建”操作,将其设置为“发布”, “更新”和“销毁”操作


    如果要通过代理销毁记录,应使用以下方法

    该方法由Ext.data.Model从Ext.Base继承,在处理模型时通常不直接调用

    调用此方法以清理对象及其资源。之后 调用此方法时,不应进一步使用该对象

    已更新

  • 它跳过了代码的其余部分,因为您得到了错误
  • 如果返回成功响应,将调用
    success
    回调
  • 它发送
    POST
    请求是正常的。这就是ajax代理的工作原理。如果您想自定义它,您需要查看配置
  • 操作名称到HTTP请求方法的映射。在基本的AjaxProxy中 对于“读取”操作,将其设置为“获取”,对于“创建”操作,将其设置为“发布”, “更新”和“销毁”操作


    亲爱的@scebotari66谢谢您的回复。我更新了一些关于代码片段的信息。希望你有时间检查一下。你是如何创建记录的。您是单独加载它,还是在加载存储时创建的?我正在尝试删除数据库上创建的记录。亲爱的@scebotari66,我在
    getStore().load()之前添加了
    me.getEmployeeList()
    。现在,它同时显示console.log、Ext.MessageBox,当然也会使用此编辑刷新网格。此外,XHR为200-OK,但记录仍保留在数据库中?:-/这似乎已经是一个服务器端问题。它应该只在记录从数据库中删除后返回结果。当您稍后重新加载存储时,记录是否仍然存在?亲爱的@scebotari66谢谢您的回复。我更新了一些关于代码片段的信息。希望你有时间检查一下。你是如何创建记录的。您是单独加载它,还是在加载存储时创建的?我正在尝试删除数据库上创建的记录。亲爱的@scebotari66,我在
    getStore().load()之前添加了
    me.getEmployeeList()
    。现在,它同时显示console.log、Ext.MessageBox,当然也会使用此编辑刷新网格。此外,XHR为200-OK,但记录仍保留在数据库中?:-/这似乎已经是一个服务器端问题。它应该只在记录从数据库中删除后返回结果。以后重新加载存储时,记录是否仍然存在?