ExtJS localstorage代理模型/商店问题

时间:2015-03-19 21:01:20

标签: 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: '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

enter image description here

但是,当我将字段元素添加到商店时:

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名称。

此外,我在通过商店引用模型时收到此错误:

[错误]无法加载资源:服务器响应状态为404(未找到)(cardioCatalogQT.model.Load,第0行)

我做了一个sencha应用程序构建,没有抛出任何错误。

我知道自己做错了什么(我基本上是在做我和Sencha Touch所做的事情,我取得了很大的成功)?这可能是一个错误吗?

1 个答案:

答案 0 :(得分:0)

问题是针对ExtJS,要在商店中获取所需的名称,您必须在代理中指定和ID:

 proxy: {
            type: 'localstorage',
            id  : 'payload'
        }

现在,我的localstorage中的模型实例正在显示,我可以使用标准方法查询它们,比如findRecord。好时光!

故事的道德:ExtJS的行为与Touch不同