有两个具有相同型号的商店: inputStore 和 outputStore 。 Concepts 面板中的网格显示来自 inputsStore 的数据。 当用户复选该网格中的一行(通过Ext.selection.Checkbox.Model)时,该记录将添加到 outputStore 中。
我设法做到了,但无法将记录持久添加到 outputStore 。我是这样做的:
我在Ext.selection.Checkbox.Model中添加了一个监听器,它是网格的一部分:
selModel: Ext.create('Ext.selection.CheckboxModel', {
listeners: {
select: {
fn: me.onCheckboxModelSelect,
scope: me
}
}
})
然后将记录添加到 outputStore ,它可以正常工作。
onCheckboxModelSelect: function(rowmodel, record, index, eOpts) {
var griddd = Ext.ComponentQuery.query('#outputGridPanel')[0];
griddd.getStore().add(record);
}
我已经尝试了 Store.sync(), Store.commitChanges()和 Store.save()。
嗨回来!将内联数据存储中的两个商店更改为带代理的json商店。例如,这里是 outputStore :
Ext.define('justConcepts.store.outputStore', {
extend: 'Ext.data.Store',
requires: [
'justConcepts.model.ConceptsModel',
'Ext.data.proxy.Ajax',
'Ext.data.reader.Json'
],
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
autoLoad: true,
autoSync: true,
model: 'justConcepts.model.ConceptsModel',
storeId: 'outputStore',
proxy: {
type: 'ajax',
url: 'data/output.json',
reader: {
type: 'json',
root: 'concepts'
}
}
}, cfg)]);
}
});
这是 data / output.json 文件:
{
concepts: [
{
"id": "00A212",
"name": "Pays",
"adjacencies": ["00A213", "01A455"]
},
{
"id": "00A213",
"name": "Ville",
"adjacencies": ["00A212"]
},
{
"id": "01A455",
"name": "Fleuve",
"adjacencies": ["00A212"]
}
]
}
griddd.getStore()。add(record); 仍在工作,但无法持久, griddd.getStore()。getProxy()。getModel()。save(); < / em>不工作。
答案 0 :(得分:0)
您的问题可能出在模型定义中。
你试过了吗?
griddd.getStore().getProxy().getModel().save();
顺便说一句Ext.data.Store.save()方法不存在。我的意思是,我认为它已从ExtJs的v4.x版本中删除。
的示例//this is the model we will be using in the store
Ext.define('User', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
{name: 'name', type: 'string'},
{name: 'phone', type: 'string', mapping: 'phoneNumber'}
]
});
//this data does not line up to our model fields - the phone field is called phoneNumber
var data = {
users: [
{
id: 1,
name: 'Ed Spencer',
phoneNumber: '555 1234'
},
{
id: 2,
name: 'Abe Elias',
phoneNumber: '666 1234'
}
]
};
//note how we set the 'root' in the reader to match the data structure above
var store = Ext.create('Ext.data.Store', {
autoLoad: true,
model: 'User',
data : data,
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'users'
}
}
});
您拥有所有信息。 但是,如果您需要特定的帮助,您应该发布所有代码,以便我们为您提供帮助!