我正在开发Exjs的mvc应用程序。
我有一个Extjs模型:
Ext.define('JC.model.File', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
{name: 'fileName', type: 'string'},
{name: 'fileSize', type: 'string'},
{name: 'position', type: 'string'}
]
});
和存储器:
Ext.define('JC.store.Files', {
extend: 'Ext.data.Store',
model: 'JC.model.File',
proxy: {
url: JC.Util.createUrl('upload/getfiles'),
type: 'ajax',
simpleSortMode: true,
reader: {
type: 'json',
root: 'items',
totalProperty: 'totalCount'
},
api: {
create: '',
read: undefined,
update: undefined,
destroy: JC.Util.createUrl('upload/deletefile')
},
actionMethods:{create: 'POST', read: 'GET', update: 'POST', destroy: 'GET'}
}
});
以及具有以下列的网格面板:
columns: [
{header: 'id', dataIndex: 'id', flex: 1},
{header: 'file name', dataIndex: 'fileName', flex: 1},
{header: 'file size', dataIndex: 'fileSize', flex: 1},
{header: 'position', dataIndex: 'position', flex: 1}, {
xtype: 'actioncolumn', items: [
{
icon: 'css/images/tree/black-trash-16.png', // Use a URL in the icon config
tooltip: 'Delete',
handler: function(grid, rowIndex, colIndex) {
var rec = grid.getStore().getAt(rowIndex);
grid.getStore().destroy(rec);
}
}
]
}
],
在以下行:
grid.getStore().destroy(rec);
AJAX 请求被创建如下:
http://localhost:8084/myserver/deletefile?_dc=1422789950411&id=JC.model.File-6
我希望删除操作请求的id是记录i的所需属性,例如rec.id
,并且我希望它是int
类型。我希望请求如下所示:
http://localhost:8084/myserver/deletefile?_dc=1422789950411&id=6
我该怎么做呢?
2条答案
按热度按时间62lalag41#
我已经设置了一个小提琴来重现这个问题。
我只是通过将destory操作的actionMethod更改为POST并在模型上设置一个idProperty才成功地实现了这一点。
wvmv3b1j2#
我知道这是一篇老文章,但是您可以通过在模型中定义proxy.writer来发送所需的模型数据,在代理编写器定义中,您可以定义transform.fn,它将返回要发送到服务器的数据,作为model.data: