我KnockoutObservables
在我的代码中使用了不属于 viewModel 的部分,只是因为我喜欢能够倾听他们的状态。
但是,当我处置与HtmlElement
它们相关的处置时,我需要处置它们(我假设)以清除内存。
ko.cleanNode
我假设从 中的节点清除订阅data-bind
,这不完全是我所拥有的。
<div id="foo" data-bind="myCustomBinding: foo"></div>
自定义绑定:
ko.bindingHandlers.myCustomBinding = {
init: function (element: any, valueAccessor: () => any, allBindingsAccessor: () => any, viewModel: any, bindingContext: KnockoutBindingContext) {
new FooClass($(element), valueAccessor());
}
}
MyFooClass
然后根据需要显示并创建许多新KnockoutObservables
的公共属性。我创建的其他对象可以使用这些。我假设ko.cleanNode
不处理这个,那么我该如何清洁它们?
class FooClass {
disposed: boolean = false;
myInternalObservable: KnockoutObservable<any> = ko.observable("test");
constructor(public htmlElement: JQuery, public value: KnockoutObservable<any>) {
// Processing
}
dispose(): void {
if (this.disposed) {
return;
}
// Do other disposing, unbind events, delete data
// Dispose the ko?
this.disposed = true;
}
}
谢谢