在使用时,ko.bindingHandlers内存不会在淘汰赛中释放

时间:2018-01-09 13:49:27

标签: javascript knockout.js

我有淘汰赛绑定: https://jsfiddle.net/hemantmalpote/no01hnv1/3/

HTML

<div id="main" data-bind='dispose: $data'>
</div>
<button type="button" id="remove" value="Press">Press</button>

JS:

function getArray()
{
    var myArray = [];
    for (var i = 0; i < 10000000; i++) {
        myArray.push('hello');
    }
    return myArray;
}

function Model() {
    console.log('model created');
    this.name = [];
}

Model.prototype.dispose = function () {
    console.log('model disposed');
}

var model = new Model();
model.name = getArray();
var container = document.getElementById('main');

ko.bindingHandlers.dispose = {
    init: function (element, valueAccessor) {
        ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
            model.dispose()
        })
    }
}

ko.applyBindings(model, container);

$(document).on('click', '#remove', function () {
    ko.removeNode(container);
});

我只是创建一个模型和dispose bindingHandlers,我绑定到div。

然后有Press按钮,点击该按钮即可删除节点。

当我检查任务管理器中的内存时,在删除节点时内存不会释放。

我使用ko.utils.domNodeDisposal.addDisposeCallback。执行进入此方法,但仍未释放内存。

0 个答案:

没有答案