即使在我已经使具有计算属性的对象无效之后,如果依赖的observable已经更改,也会调用计算属性。
我想要,因为我已经使对象无效,它应该被垃圾收集,但看起来像Knockout保持对象存活以及不再相关的订阅。
在淘汰赛中是否有办法执行此操作,即删除无效对象的订阅,从而使其可用于垃圾回收。我试图通过它的文档,但没有成功。
这是一个演示问题的小提琴..
http://jsfiddle.net/qy4sshv6/5/
void write_to(int socket) {
int buflen = strlen(buf);
int written, offset = 0;
while (offset <= buflen) {
if ((written = write(socket, buf + offset, buflen - offset + 1)) < 0) {
perror("write");
}
fprintf(stderr, "%d\n", written);
offset += written;
}
}
答案 0 :(得分:0)
您需要使用dispose
的{{1}}方法。
ko.computed
- 手动处理计算的observable,清除对依赖项的所有订阅。如果要阻止计算的observable被更新,或者想要清理一个依赖于不会被清除的observable的计算observable,则此函数非常有用。
所以你只需要写:
dispose()
演示JSFiddle。