0

当我更新与 Sencha Touch 列表 (Ext.dataview.List) 关联的商店时,列表 UI 会自动更新(如在 MVVM 中)。

我正在创建一个移动应用程序,它有大量通过 websocket 传入的数据,并且商店经常更新。我相信即使只有一个字段发生更改,也会重新渲染整个列表项(使用 itemTpl)。正如您可能想象的那样,这非常慢,而且我的应用程序严重滞后。

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

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

4

1 回答 1

1

您想使用suspendEvents 和resumeEvents 方法。这些是通过 Observable mixin 提供的,可以在商店和列表中使用。使用 suspendEvents 停止任何事件(例如刷新列表)并使用 resumeEvents 重新开始监听。当恢复任何在暂停期间触发的事件时,将排队并再次触发,所以如果你想丢弃这些事件,那么你需要确保执行suspendEvents(false)。

通过innerHTML 手动更新将是一个巨大的痛苦,我建议您在加载商店时只执行suspendEvents,并且每当您想要更新列表时只需resumeEvents 并从商店手动刷新它。

请参阅此链接以进一步阅读。

于 2013-01-16T04:07:05.863 回答