Javascript 删除函数未在ExtJS 5.1.1中运行
我已经定义了一个删除函数,它将删除Gridpanel上的记录,但不知怎么的,它什么都不做!调试过程中出现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
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代理的工作原理。如果您想自定义它,您需要查看配置如果要通过代理销毁记录,应使用以下方法 该方法由Ext.data.Model从Ext.Base继承,在处理模型时通常不直接调用 调用此方法以清理对象及其资源。之后 调用此方法时,不应进一步使用该对象 已更新
success
回调POST
请求是正常的。这就是ajax代理的工作原理。如果您想自定义它,您需要查看配置亲爱的@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,但记录仍保留在数据库中?:-/这似乎已经是一个服务器端问题。它应该只在记录从数据库中删除后返回结果。以后重新加载存储时,记录是否仍然存在?