我正在使用ExjJs 4.2。我有两个显示不同数据的网格。在一个javascript文件中,我必须包括两个网格。我正在为第一个网格加载商店,如
var store = Ext.create('Ext.data.Store', {
model: 'Writer.Person',
autoLoad: true,
proxy: {
type: 'ajax',
url : 'findPatientRecordAction',
reader: {
type: 'json',
successProperty: 'success',
root: 'data',
messageProperty: 'message'
},
writer: {
type: 'json',
encode: true,
root: 'data'
},
fields: ['id','notes', 'startDate', 'endDate'],
},
});
JSON对象库如下所示:
“data”:[{“id”:35,“notes”:“hiii”,“startDate”:“2013-04-30”,“endDate”:“2013-05-02”}]}, “方式”:[{ “ID”:14, “文件”: “docpath12345”, “日期”: “2013年4月28日”}]
实际上,第一个网格将仅显示JSON的“数据”部分,第二个网格将显示JSON的“详细信息”部分。理想情况下,我不应该为第二个网格再次加载商店对象(我现在正在做什么)。我想再声明一个商店类型变量并重用'store'的值(商店的'documents'部分)成为将第二个网格存储为
我现在正在加载第二家商店
var store2 = Ext.create('Ext.data.Store',{
model: 'Writer.Document',
autoLoad: true,
proxy: {
type: 'ajax',
url : 'findPatientRecordAction',
reader: {
type: 'json',
successProperty: 'success',
root: 'details',
messageProperty: 'message'
},
writer: {
type: 'json',
encode: true,
root: 'details'
},
fields: ['id','document', 'date'],
},
});`.
在这两种情况下,我都在调用相同的操作并获得相同的JSON。
任何人都可以在这里帮助我,我如何声明另一个商店对象并从现有的“商店”获取价值,这样我就不必加载相同的数据2次。
问候:开发
答案 0 :(得分:5)
您可以将第一个商店的自动加载设置为false。然后在第二个商店中使用load事件将记录注入第一个使用存储活动代理数据的记录:
var store2 = Ext.create('Ext.data.Store', {
model: 'Writer.Document',
autoLoad: true,
proxy: {
type: 'ajax',
url : 'findPatientRecordAction',
reader: {
type: 'json',
successProperty: 'success',
root: 'details',
messageProperty: 'message'
},
writer: {
type: 'json',
encode: true,
root: 'details'
},
fields: ['id','document', 'date'],
},
listeners: {
load: function(store, records, successful, eOpts){
if(successful)
{
store1.loadData(store.proxy.reader.rawData.data);
}
}
}
});
答案 1 :(得分:-1)
我会替换:
listeners: {
load: function(store, records, successful, eOpts){
if(successful)
{
store1.loadData(**store.getRange()**);
}
}
}
我认为这是一样的:
store.proxy.reader.rawData.data< - > store.getRange()