0

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;
    }
}

ありがとう

4

1 に答える 1