我有一个关于模型字段Map属性的问题。
首先,这是我的模型:
Ext.define('app.model.userModel', {
extend: 'Ext.data.Model',
requires: [
'Ext.data.field.Field'
],
idProperty: 'UserId',
fields: [
{
mapping: 'EMAIL',
name: 'UserEmail',
type: 'string'
},
{
mapping: 'ID',
name: 'UserId',
type: 'string'
},
{
mapping: 'NAME',
name: 'Name',
type: 'string'
}
],
proxy: {
api: {
read: readUrl,
create: createUrl,
update: updateUrl,
destroy: destroyUrl
},
type: 'ajax',
reader: {
type: 'json'
},
writer: {
type: 'json',
allowSingle: false,
writeAllFields: true,
nameProperty: 'mapping'
}
}
});
我有一家这样的商店:
Ext.define('app.store.userStore', {
extend: 'Ext.data.Store',
requires: [
'app.model.userModel',
'Ext.data.proxy.Ajax',
'Ext.data.reader.Json'
],
constructor: function (cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
storeId: 'userStore',
model: 'app.model.userModel',
autoLoad: true,
pageSize: 1,
proxy: {
api: {
read: readUrl,
create: createUrl,
update: updateUrl,
destroy: destroyUrl
},
type: 'ajax',
enablePaging: true,
reader: {
type: 'json',
rootProperty: 'SuccessObjs',
totalProperty: 'Count'
},
writer: {
type: 'json',
allowSingle: false,
writeAllFields: true,
nameProperty: 'mapping'
}
}
}, cfg)]);
}
});
现在,如果我直接使用json对象的字段名作为模型字段名,那么这段代码可以完美地工作(没有nameProperty: 'mapping'
行编写器)。但当我将json对象字段名Map到其他内容时,记录中只存在Map名称({'UserEmail', 'UserId', 'Name'}
)。如果我向writer添加nameProperty: 'mapping'
行,记录的所有属性都会重复({'EMAIL', 'UserEmail', 'ID', 'UserId', 'NAME', 'Name'}
)。这是一个问题,因为当我试图保存记录时,记录中有2个name属性,这会混淆我的后端。
对不起,邮件太长了,这里没有土豆。
提前谢谢。
1条答案
按热度按时间bpzcxfmw1#
我可以看看你的json数据吗?
在您的情况下,代理编写器没有指向json数据的根,请尝试如下更改属性。
这是我的json数据:
这是我的模型:
这是我的代理人:
最后,这是我的网格面板列:
很抱歉回答得太长了。