使用复杂模型结构时何时调用 Backbone.Relational.store.unregister()



我有一个使用骨干关系的应用程序构建,它疯狂地泄漏内存。据我所知,这是因为我从未在我的模型上调用 Backbone.Relational.store.unregister(),导致它们永远保存在商店中。

数据模型相当深入,有许多相互关联的类,我或多或少地不断获取与不断变化的过滤器匹配的模型树。然而,单个模型的所有权尚不清楚,因为它们也可能被应用程序的其他部分使用,而不是最初获取它们的部分。

我应该何时取消注册模型?在阅读了 Backbone Relational 的源代码后,我可以看到 unregister() 是在"destroy"上调用的,但由于我从不删除模型,这是不行的。

您可能应该更多地描述您的设置。您通常如何管理和访问模型?是否有应用程序范围的单一实例集合?

我们通过将取消注册绑定到集合的remove事件来解决此问题。如果有效,那么,模型只有在它们是集合的一部分时才是关系的。从集合中删除模型后,该模型将被丢弃。这可能适合您,也可能不适合您,具体取决于应用程序的体系结构。

旁注:我已经放弃了Backbone.Relational,因为根据我的经验,这是非常危险的。当你开始使用它时,它就像一个魅力,但很容易在自己的脸上开枪。就像你看起来一样。而且由于它的设计鼓励您将它与应用程序代码的每个方面紧密耦合,因此摆脱它可能非常困难。

相关内容

  • 没有找到相关文章

最新更新