即使在对象无效之后,knockout也会维护对计算属性的预订

时间:2015-11-22 20:21:48

标签: knockout.js

即使在我已经使具有计算属性的对象无效之后,如果依赖的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;
    }
}

1 个答案:

答案 0 :(得分:0)

您需要使用dispose的{​​{1}}方法。

来自documentation

  

ko.computed - 手动处理计算的observable,清除对依赖项的所有订阅。如果要阻止计算的observable被更新,或者想要清理一个依赖于不会被清除的observable的计算observable,则此函数非常有用。

所以你只需要写:

dispose()

演示JSFiddle