extjs - JsonStore 加载记录并将其标记为幻像

标签 extjs store extjs3 jsonstore

我的 JsonStore 是这样定义的:

var data_json = new Ext.data.JsonStore({
    url: '/Game/json_index',
    autoLoad: true,
    id: 'data_json',
    idProperty: 'id',
    fields: [ {name: 'id', type: 'int'}, 'name', {name:'add_date', type:'date', dateFormat: 'M$'}, 'price', 'kind', 'metacritic'],
    listeners: { 'load': function(storename, records, options){
    console.dir(this);
    }},
    writer: new Ext.data.JsonWriter()
})

它接收到的 JSON 的转储类似于:

[
{"id":1,"name":"Guild Wars 2","add_date":"\/Date(1346104800000)\/","price":24.99,"kind":"MMO","metacritic":93},
{"id":2,"name":"Dark Souls: Prepare to Die Edition","add_date":"\/Date(1345759200000)\/","price":45.00,"kind":"actionrpg","metacritic":87},
{"id":3,"name":"Orcs Must Die! 2","add_date":"\/Date(1343599200000)\/","price":15.00,"kind":"action","metacritic":83}
]

JSON 已正确解码,商店里充满了我的记录,但要小心..可怕的事情发生了!

Screenshot of the terrible thing

所有记录都已标记为 phantom = true,这不允许我正确使用 ExtJS 3.4.x store.save() 功能

我已经在谷歌上彻底搜索了这个问题,并且(我认为)它与 JsonReader 没有将记录 id 与我传递的“id”字段相关联这一事实有关。 我什至指定了 idProperty: 'id'。

有帮助吗?我越来越绝望了,阅读有关记录创建的 extjs 源代码纯粹是痛苦

最佳答案

尝试删除:

id: 'data_json'

来自您的商店。 JsonStore 的所有配置选项都会传递到自动创建的 JsonReader 中,这似乎就是搞砸的原因。

关于extjs - JsonStore 加载记录并将其标记为幻像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12513279/

相关文章:

php - 用于多个页面的 extJs MVC

javascript - 将 Ext.Loader 配置为每个命名空间有一个文件

reactjs - 没有 Redux 的情况下组合Reducer

javascript - 如何使用窗口 src 发送参数

javascript - 我在按钮监听器的范围方面遇到问题

javascript - ExtJS 3. Ext.tree.TreeNode OnIconClick 事件

java - 如何在不使用数组的情况下读取字符串并存储到不同的变量中

angular - ngrx 4 选择器返回整个状态而不是子状态

extjs4 - 如何在 Ext Js 窗口中动态添加工具?

extjs - 如何最后添加两行网格