Javascript 让Sencha触摸列表(或ExtJS网格)不遵守存储和自动更新UI?

Javascript 让Sencha触摸列表(或ExtJS网格)不遵守存储和自动更新UI?,javascript,extjs,sencha-touch-2,Javascript,Extjs,Sencha Touch 2,当我更新与Sencha触摸列表(Ext.dataview.list)关联的存储时,列表UI会自动更新(如MVVM中) 我正在创建一个移动应用程序,它有大量的数据通过websocket进入,并且商店经常更新。我相信即使只有一个字段发生更改,整个列表项也会被重新呈现(使用itemTpl)。正如你所想象的,这是难以置信的缓慢,我的应用程序是严重滞后 我想通过列表禁用对存储的这种“观察”,并使用innerHTML自己更新列表项。有办法做到这一点吗?或者有没有一种方法可以在不更新UI的情况下更新存储 我的

当我更新与Sencha触摸列表(Ext.dataview.list)关联的存储时,列表UI会自动更新(如MVVM中)

我正在创建一个移动应用程序,它有大量的数据通过websocket进入,并且商店经常更新。我相信即使只有一个字段发生更改,整个列表项也会被重新呈现(使用itemTpl)。正如你所想象的,这是难以置信的缓慢,我的应用程序是严重滞后

我想通过列表禁用对存储的这种“观察”,并使用innerHTML自己更新列表项。有办法做到这一点吗?或者有没有一种方法可以在不更新UI的情况下更新存储


我的另一个选择是限制数据,但这是最后的手段。

您希望使用suspendEvents和resumeEvents方法。这些是通过可观察的mixin提供的,可以在存储和列表中使用。使用suspendEvents停止任何事件(如刷新列表),使用resumeEvents重新开始侦听。在恢复事件时,暂停期间激发的任何事件都将排队并再次激发,因此如果要丢弃这些事件,则需要确保执行suspendEvents(false)

通过innerHTML手动更新将是一件非常痛苦的事情,我建议在加载存储时只执行suspendEvents,无论何时,只要想更新列表,只需恢复事件并从存储中手动刷新它


请参阅进一步阅读。

这正是我最终要做的……我使用的是suspendEvents(true)和resumeEvents()。但是,列表需要频繁更新(每秒多次),因此从存储中刷新它是不可行的,因此我必须手动更新DOM。我认为suspendEvents(true)将对挂起事件进行排队,并且仍然在resumeEvents中激发它们。您可能不希望这样做,因为您会无缘无故地在列表上重复刷新大量内容。此外,如果您每秒多次手动更新大列表上的DOM,请注意性能。。。。您是否研究过模板成员函数?