gpt4 book ai didi

javascript - 商店同步问题

转载 作者:行者123 更新时间:2023-12-02 19:32:14 25 4
gpt4 key购买 nike

我想做的事情:

让用户能够在本地存储数据,直到他决定上传全部数据。为了实现这一目标,我将表单中的数据填充到模型中,然后用该模型填充存储(同步)。该商店有本地存储代理。
offlineStore.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 调用的代理的存储:
在线商店:

   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'
}
...

问题:

不幸的是,在我将离线商店中的数据添加到其中后,我的在线商店甚至没有执行store.sync()。因此,不会进行 REST 调用。我意识到当商店同步未更改的数据时会发生这种情况。这很奇怪,因为在将数据从离线商店复制到在线商店之前,我没有向在线商店添加任何内容。

因此,我在创建后立即在在线商店上创建了一个console.log。我看到这家店已经填好了表格数据。而且,我猜这就是 sync() 未执行的原因,因为我将相同的数据添加回其中,就在这一次,从离线商店 。我很困惑这个在线商店如何以及从哪里获取数据。
在将离线商店中的任何内容添加到在线商店之前,我也尝试过store.removeAll(),但它对商店内容没有影响。

请告知您是否需要查看更多代码。

编辑 1:我如何填充离线商店 - 我创建模型的实例,用表单数据填充它并执行 offlineStore.add(myModel)。之后我执行offlineStore.sync()。这就是我用数据填充模型的方式:

var myModel = Ext.create('blahblah.model.myDataModel',{  
datafield1 = formdata1,
datafield2 = formdata2
});

我什么时候查看在线商店:
当用户单击表单的提交按钮时,我获取离线商店并创建在线商店。令人惊讶的是,我刚刚观察到,当我 getStored 时,不仅在线商店,甚至离线商店也有表单数据。因此,基本上,即使在我对其执行 sync() 或添加数据填充模型之前,数据也会进入离线和在线存储?这让我更加困惑。

最佳答案

终于从 Sencha forums 找到了解决我的问题的方法:设置record.phantom = true .

在将记录添加到在线商店(从离线商店)之前,我执行了上面的代码。现在,当存储同步时,它认为新添加的记录确实是一条新记录,因此执行了 POST 请求。

我还必须补充一点,如果您设置 record.dirty = true ,然后商店发送了 PUT 请求而不是 POST。

关于javascript - 商店同步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11360028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com