gpt4 book ai didi

javascript - 删除功能在 ExtJS 5.1.1 中不运行

转载 作者:行者123 更新时间:2023-12-01 03:17:08 27 4
gpt4 key购买 nike

我定义了一个删除函数,它将删除 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,跳过里面的剩余 block 。当我尝试一步一步走时,我注意到;它会保留正确的数据,直到 ext-debug.js 的 afterDrop() 函数。
2. 我定义了两个 console.log - 正如您在上面注意到的 - 它仅显示“成功步骤一”
3. 在开发工具的“网络”选项卡中,有 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
}
}
});

最佳答案

如果你想通过代理销毁记录,你应该使用 erase方法。

destroy方法是Ext.data.Model从Ext.Base继承的,在处理模型时通常不会直接调用它。

This method is called to cleanup an object and its resources. After calling this method, the object should not be used any further.

已更新

  1. 它会跳过其余代码,因为您收到了错误。
  2. 如果返回成功响应,success 回调将被调用。
  3. 发送POST请求是正常的。这就是ajax代理的工作原理。如果你想自定义这个,你需要看看actionMethods配置。

Mapping of action name to HTTP request method. In the basic AjaxProxy these are set to 'GET' for 'read' actions and 'POST' for 'create', 'update' and 'destroy' actions.

关于javascript - 删除功能在 ExtJS 5.1.1 中不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45485753/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com