【问题标题】:JsonStore loads records and marks them phantomJsonStore 加载记录并将它们标记为幻像
【发布时间】:2012-09-12 20:35:31
【问题描述】:

我的 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 的 DUMP 类似于:

[
{"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 被正确解码,并且商店里满是我的记录,但要小心.. 可怕的事情发生了!

所有记录都被标记为 phantom = true,这让我无法正确使用 ExtJS 3.4.x store.save() 功能

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

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

【问题讨论】:

    标签: extjs store extjs3 jsonstore


    【解决方案1】:

    尝试删除:

    id: 'data_json'
    

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

    【讨论】:

    • 即使提到配置传递不是问题+1
    • 解决了! 'id' 在商店中已弃用;使用 storeId 是正确的处理方式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 2020-11-13
    • 2018-10-13
    • 2015-05-23
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多