ExtJS 本地存储代理 model/store 问题
ExtJS localstorage proxy model/store issue
我正在使用 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。
此外,我在通过商店引用模型时遇到此错误:
[错误] 加载资源失败:服务器响应状态 404(未找到)(cardioCatalogQT.model.Load,第 0 行)
我已经完成了 sencha 应用程序构建,没有出现任何错误。
知道我做错了什么吗(我基本上是在做我用 Sencha Touch 做的事情,我在那里取得了很大的成功)?也许这是一个错误?
ExtJS 的问题,要在商店中获得所需的名称,您必须在代理中指定和 ID:
proxy: {
type: 'localstorage',
id : 'payload'
}
现在,我的本地存储中的模型实例已按需显示,我可以使用标准方法(如 findRecord)查询它们。好时光!
故事的寓意:ExtJS 的行为与 Touch 不同
我正在使用 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。
此外,我在通过商店引用模型时遇到此错误:
[错误] 加载资源失败:服务器响应状态 404(未找到)(cardioCatalogQT.model.Load,第 0 行)
我已经完成了 sencha 应用程序构建,没有出现任何错误。
知道我做错了什么吗(我基本上是在做我用 Sencha Touch 做的事情,我在那里取得了很大的成功)?也许这是一个错误?
ExtJS 的问题,要在商店中获得所需的名称,您必须在代理中指定和 ID:
proxy: {
type: 'localstorage',
id : 'payload'
}
现在,我的本地存储中的模型实例已按需显示,我可以使用标准方法(如 findRecord)查询它们。好时光!
故事的寓意:ExtJS 的行为与 Touch 不同