我有淘汰赛绑定: 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
。执行进入此方法,但仍未释放内存。