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模型