ExtJS本地存储代理模型/存储问题
我在使用ExtJS 5.1.0时遇到了一个奇怪的问题 我有以下型号: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
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
?很有趣。我没有尝试这个。我假设(可能是错误的)我必须提供完整的命名空间。