【发布时间】:2014-03-11 08:03:28
【问题描述】:
有两个相同模型的商店:inputStore和outputStore。 Concepts 面板中的网格显示来自 inputStore 的数据。 当用户选中该网格中的一行时(通过 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(); 不工作。
【问题讨论】:
-
当您持续说下去时,我假设您的意思是它被通过网络推送到数据库或某种数据存储中。这家商店有代理设置来处理保存吗?
-
只是一个内嵌数据的商店
-
您希望它在哪里持续存在?这是一个静态的 json 文件。
-
@EvanTrimboli 不能写入那个 json 文件吗?
-
不,不能。你能想象如果你可以向服务器发出请求并让它更新文件吗?
标签: javascript extjs crud