我正在尝试做的事情:
让用户能够在本地存储数据,直到他决定全部上传。为此,我将表单中的数据填充到模型中,然后使用该模型填充存储(同步)。这家商店有一个本地存储代理。
离线商店.js:
Ext.define('blahblah.store.offlineStore',{
extend:'Ext.data.Store',
config:{
model:'blahblah.model.myModel',
id: 'offlineRegisterStore',
sorters:'xyz',
grouper:function(record){
return record.get('xyz')[0];
},
proxy: {
type: 'localstorage',
id: 'offlineRegisterStoreid'
}
...
现在,当用户按下同步按钮时,我将数据从该离线商店复制到另一个具有执行 REST 调用的代理的商店:
OnlineStore:
Ext.define('blahblah.store.upStore', {
extend: 'Ext.data.Store',
config: {
model: 'blahblah.model.myModel',
id: 'abc',
sorters: 'xyz',
grouper: function (record) {
return record.get('xyz')[0];
},
proxy: {
type: 'rest',
url: HOST,
headers: HEADERS,
reader: {
type: 'json'
},
writer: {
type: 'json'
}
...
问题:
不幸的是,在我将离线商店中的数据添加到其中之后,我的在线商店甚至没有执行。因此,不会进行 REST 调用。我意识到当商店同步未更改的数据时会发生这种情况。这很奇怪,因为在将数据从离线商店复制到在线商店之前,我没有向在线商店添加任何内容。 store.sync()
所以我在创建它之后console.log
就在网上商店做了一个。我看到这家商店已经有填写好的表格数据了。而且,我猜这就是为什么sync()
不执行,因为我正在将相同的数据添加回其中,就在这一次,来自离线商店。我对这家在线商店如何以及从何处获取数据感到困惑。在将线下商店中的任何内容添加到在线商店之前,
我也尝试过,但它对商店内容没有影响。 store.removeAll()
一定要告诉您是否需要查看更多代码。
编辑 1:我如何填充离线商店 - 我创建模型的一个实例,用表单数据填充它并执行offlineStore.add(myModel)
. 在这之后我做offlineStore.sync()
。这就是我用数据填充模型的方式:
var myModel = Ext.create('blahblah.model.myDataModel',{
datafield1 = formdata1,
datafield2 = formdata2
});
我在什么时候检查在线商店:
当用户单击表单的提交按钮时,我获取离线商店并创建在线商店。令人惊讶的是,我刚刚观察到不仅在线商店,甚至离线商店在我做的时候也有表单数据getStore
。sync()
所以基本上数据甚至在我执行它们或添加数据填充模型之前就进入了离线和在线商店?这让我更加困惑。