Sencha touch 2 Sencha Touch 2-“;悄悄地;删除和更新localstorage中的记录

Sencha touch 2 Sencha Touch 2-“;悄悄地;删除和更新localstorage中的记录,sencha-touch-2,Sencha Touch 2,我有一个sencha touch 2 web应用程序,它使用localstorage数据源存储大量记录 我能够很好地执行所有常规crud操作,但我希望使用Web服务同步数据。因此,sencha应用程序将定期轮询Web服务以获取数据更改,然后对我的sencha应用程序的localstorage数据源进行必要的更改 我的方法是使用以下代码块每60秒运行一次同步进程: var timerID = setInterval(function() { MyApp.app.BackgroundProc

我有一个sencha touch 2 web应用程序,它使用localstorage数据源存储大量记录

我能够很好地执行所有常规crud操作,但我希望使用Web服务同步数据。因此,sencha应用程序将定期轮询Web服务以获取数据更改,然后对我的sencha应用程序的localstorage数据源进行必要的更改

我的方法是使用以下代码块每60秒运行一次同步进程:

var timerID = setInterval(function()
{
    MyApp.app.BackgroundProcessingMain();
}, (60000));
在“BackgroundProcessingMain()”中,我有各种方法调用来同步各种数据存储(5)

我调用webservice并获取我需要的数据,然后我的方法是循环返回的数据,将我的存储筛选到返回数据的当前项的id,然后删除它,或者根据需要更新它。 这个很好用。。但是,如果此后台进程启动,并且我正在查看绑定列表控件,则使用数据源的筛选版本的列表会突然下降到仅显示单个项目,通常是返回数据中需要同步的最后一个项目,因为它是更新进程筛选存储操作的最后一个项目

我想我可以使用store.findById,获取记录引用并以这种方式更新/删除,但是如果由于绑定列表所需的视图,特定ID已经被过滤掉,则记录在存储中找不到,因此无法更新

我希望能够做的是获取存储的临时副本,未经筛选,能够修改它,然后当我的应用程序在下次显示表单时查询本地存储时,它将只获取新的更新数据

这就是我在标题中所说的“安静”

有没有人对我可以采取什么样的流程来完成此更新有什么建议

如果您有示例代码,那就太棒了,但是伪代码很好


谢谢

您可以使用
suspendEvents()
resumeEvents()
临时阻止您的商店触发事件。然后,您可以清除过滤器,应用更新(使用
store.findById()
),并在不更改列表的情况下重新应用过滤器

var store = Ext.getStore('myStore');
store.suspendEvents();
store.clearFilter();
doThings(...);
store.filter(myFilters);
store.resumeEvents();
如果将
true
传递到
store.resumeEvents()
,缓冲的事件将被丢弃