商店创建后不会获得新ID

时间:2014-02-12 10:06:07

标签: rest extjs extjs4.2

我有一个带有商店+模型+ REST代理的可编辑网格 获取,更新和删除没有问题,但如果我这样做:

store.insert(0, {});
cellEditing.startEditByPosition({
    row: 0,
    column: 1
});

服务器响应:

{
"success":true,
"results":0,
"root":"data",
"message":null,
"data":{"TerritoryUserPK":"7f064ddd-d5c9-47ae-94cc-29da14d27962"},
"debug":null
}

其中“TerritoryUserPK”是模型的idProperty 我现在希望商店将这个id用于新对象,但它仍然是“ext-record-1”。

服务器响应必须如何,因此Ext Store除了新ID之外? 读者是这样的:

reader: {
    type: 'json',
    root: 'data',
    messageProperty: 'message',
    totalProperty: 'results'
}

2 个答案:

答案 0 :(得分:1)

发现问题,store.load()获取一个包含元数据的对象,以便将阅读器的root属性设置为"rows"。在POST请求之后,服务器使用没有元数据的对象和"data"属性中的数据进行响应。读者会记住最后一个根属性,并将搜索"rows"并且无法找到该属性。

因此,请始终了解元数据设置的值。

答案 1 :(得分:0)

尝试在模型中设置clientIdProperty,并将ext生成的id返回到数据中......

例如,在您的模型中:

clientIdProperty: 'clientId'

在你的回复中:

data: [{id: 123, clientId: 'ext-record-1', ...}]

我不记得是否在配置的idProperty(我认为是这样)或clientIdProperty中将客户端ID发送到服务器...检查浏览器请求是否确定!