ExtJS本地存储代理模型/存储问题

ExtJS本地存储代理模型/存储问题,extjs,model,local-storage,store,Extjs,Model,Local Storage,Store,我在使用ExtJS 5.1.0时遇到了一个奇怪的问题 我有以下型号: Ext.define('cardioCatalogQT.model.Load', { extend: 'Ext.data.Model', config:{ idProperty: 'id', fields: [ {name: 'key', type: 'string'}, {name: 'comparator', type: 's

我在使用ExtJS 5.1.0时遇到了一个奇怪的问题

我有以下型号:

Ext.define('cardioCatalogQT.model.Load', {
    extend: 'Ext.data.Model',

    config:{
        idProperty: 'id',
        fields: [
            {name: 'key', type: 'string'},
            {name: 'comparator', type: 'string'},
            {name: 'value', type: 'string'},
            {name: 'type', type: 'string'}
        ]

    }
});
商店:

Ext.define('cardioCatalogQT.store.Payload', {
    extend: 'Ext.data.Store',
    alias: 'store.Payload',
    // add package.framework=ext to .sencha/app/sencha.cfg
    config:{

        model: 'cardioCatalogQT.model.Load',
        storeId: 'Payload',
        autoLoad: true,

        proxy: {
            type: 'localstorage'
        }
    }
});
将记录添加到存储时:

var payload = Ext.create('cardioCatalogQT.store.Payload');

payload.add({
    type: 'dx',
    key: item.data.code,
    comparator: 'eq',
    value: item.data.description
});

payload.sync();
localstorage中的数据看起来像所有记录,除了附加图像中的#7和#11

但是,当我向存储添加字段元素时,如下所示:

Ext.define('cardioCatalogQT.store.Payload', {
    extend: 'Ext.data.Store',
    alias: 'store.Payload',
    // add package.framework=ext to .sencha/app/sencha.cfg
    config:{
        idProperty: 'id',
        fields: [
            {name: 'type', type: 'string'},
            {name: 'key', type: 'string'},
            {name: 'comparator', type: 'string'},
            {name: 'value', type: 'string'}
        ] ,

        //model: 'cardioCatalogQT.model.Load',
        storeId: 'Payload',
        autoLoad: true,

        proxy: {
            type: 'localstorage'
        }
    }
});
我在7和11中得到了期望的结果

另一个问题是,我没有为模型记录提供实际名称,而是为模型实例提供了一个非常无用的名称ext-data-proxy-localstorage-N

此外,通过商店引用模型时,我也会遇到此错误:

var payload = Ext.create('cardioCatalogQT.store.Payload');

payload.add({
    type: 'dx',
    key: item.data.code,
    comparator: 'eq',
    value: item.data.description
});

payload.sync();
[错误]加载资源失败:服务器响应状态为404(未找到)(cardioCatalogQT.model.load,第0行)

我已经完成了sencha应用程序构建,没有抛出任何错误


你知道我做错了什么吗(我基本上是在做我用Sencha Touch做过的事情,我在那里取得了很大的成功)?这可能是一只虫子吗

问题是针对ExtJS的,要在存储上获得所需的名称,必须在代理中指定名称和id:

 proxy: {
            type: 'localstorage',
            id  : 'payload'
        }
现在,localstorage中的模型实例按需要显示,我可以使用标准方法(如findRecord)查询它们。好时光


故事的寓意:ExtJS的行为与Touch不同

有助于阅读API文档,而不是假设行为是相同的():“我们的搜索模型只包含两个字段——id和查询——外加一个代理定义。我们需要传递给LocalStorage代理的唯一配置是一个id。这很重要,因为它将此代理中的模型数据与所有其他数据分开。localStorage API将所有数据放入一个共享名称空间,因此通过设置id,我们可以启用LocalStorageProxy来管理保存的搜索数据。“您是如何指定id属性的?我正在使用sencha architect,它不允许我这样做。我在IDE(WebStorm)中手动执行所有操作。”使用vim插件。我从来没有遇到过手动创建模型和存储的问题。事实上,我强烈建议您尝试这种方法,因为您显然可以更好地控制该过程(永远不要相信GUI设备会帮您完成)。对于404错误:存储中的模型声明不应该很短吗
model:Load
?很有趣。我没有尝试这个。我假设(可能是错误的)我必须提供完整的命名空间。