取消订阅时销毁可观察量

时间:2013-04-23 07:31:31

标签: knockout.js knockout-2.0

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

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

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

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

我的应用程序被拆分为组件,每个组件可能会也可能不会使用主项目池中的项目。这意味着我不能只搜索我解除绑定的先前项目,只是销毁可观察量,但我必须搜索所有组件。从性能的角度来看,这并不好,也不好,因为组件不需要彼此了解。

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

谢谢。

1 个答案:

答案 0 :(得分:0)

在这种情况下,{p>不会Delete operator工作吗?如果删除某个对象的某些属性是你想要完成的,那么使用delete操作符就可以了。

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

当您准备删除某个媒体资源时(通过某项事件或其他方式)

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

这假设您想要在挖空视图模型对象中仅定位一个属性。