2

我有以下情况: - 具有大量项目的应用程序。(1mil+) - 在列表中的每一项上都有一个可观察的。

如果我从应用程序初始化创建可观察对象,应用程序将冻结,因为它需要大量处理和内存。解决方案是按需创建它们,因为项目将一次部分呈现。这很容易做到。

我需要的是,在我取消绑定项目后,显示一个新批次,销毁已创建但不再使用的可观察对象。

一种解决方案是,当我切换到新批次时,遍历旧批次并销毁。这也很容易做到,但不幸的是还不够。

我的应用程序分为多个组件,每个组件可能使用或不使用主项目池中的项目。这意味着我不能只搜索之前解绑的项目并销毁可观察对象,而是必须搜索所有组件。从性能的角度来看,这并不好,也不好,因为组件不需要相互了解。

所以我的问题是。一旦没有更多订阅者,在淘汰赛中是否有任何方法(内置或不内置)来销毁可观察对象?

谢谢你。

4

1 回答 1

0

Delete 运算符在这种情况下不工作吗?如果删除对象的某些属性是您想要完成的,那么使用删除运算符应该可以解决问题。

var viewModel = { name: ko.observable("me"),` age: "a lot" };

当您准备好删除属性时(通过事件或其他方式)

$('element').on('event', function() { delete viewModel.prop; });

这是假设您只想定位淘汰视图模型对象中的一个属性。

于 2013-05-13T01:51:20.060 回答