Knockout:从observable中删除所有订阅

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Knockout:从observable中删除所有订阅相关的知识,希望对你有一定的参考价值。

我有一个observable,我想释放使用的内存。当设置为null时,垃圾收集器不会收集它,因为在某些订阅中引用了其他人。

问题是 - 如何删除所有订阅者?

例如:

创建:

this.x = ko.observable();

删除:

this.x(null);

但它没有被删除,因为它在某些订阅中被引用:

this.y.subscribe(function (newValue) {
   var z = this.x();
};

我不想dispose订阅 - 因为x的新值我想要y订阅它。

我希望很清楚。

谢谢

答案

问题是您已经在更新x时未更新的代码中复制了其内容。我知道你只是举个例子,但是subscribe通常是代码味道,你的情况告诉我你应该制作一个computed,当x改变时会更新,这将解决你的问题。

你无法摆脱与x相关的所有记忆,同时保留其内容的副本。

以上是关于Knockout:从observable中删除所有订阅的主要内容,如果未能解决你的问题,请参考以下文章

在 knockout.js 中将 observable 从一个视图模型传递到另一个视图模型

将自定义JavaScript模型映射到具有observable的Knockout模型

使用 Knockout Observable 数组

谁能帮助理解这个 Knockout Observable?

在 knockout.js 中更改 observable 但不通知订阅者

从javascript函数更新Knockout viewmodel表单输入绑定