私はビューモデルを作成するためにdurandalとrequirejsを使用しています。私はまた、ビューから離れて移動するたびに、構成ライフサイクルコールバックメソッドdeactivate
に接続しています。私はこの方法で私のビューモデルを処分したい。無効化後にDurandalでビューモデルを処理する方法
私はdelete this
、this = undefined
を試しましたが、動作していないようです。私もこのようなデュランダルイベントアグリゲータを使用しています
:
self.activate =() => {
App.trigger("testEvent");
};
App.on("testEvent").then(() =>
{
alert('Event Triggered!');
});
のviewmodelがロードされるので、毎回、イベントがトリガされます。今、もし私が離れてビューからナビゲートし、次に戻る(したがって、ビューモデルが再びロードされます)、イベントは2回トリガされます。 3回目のビューに移動すると、そのイベントは3回トリガされます。したがって、以前のビューモデルはまだ存在しています。そのため、各ビューモデルによってdurandalイベントがトリガーされています。したがって、この問題を解決するには、ビューモデルを無効にする必要があります。どのようにすればいいですか?
注。問題のビューモデルはシングルトンではなく一時的なものです。
登録を解除するとそのトリックが行われたようです。私のイベントはもはや複数回呼び出されません。自分のビューモデルが処分されたかどうかを実際に確認する方法はありますか、それとも気にしないでしょうか? – Viqas
何百ものビューモデルをインスタンス化していない限り、おそらく努力する価値はありませんが、Chromeデベロッパーツールを使用して、ガベージコレクタがオブジェクトを正常にクリーンアップしていることを確認するためにJavaScriptオブジェクトのカウントとメモリ割り当てを監視できます。 –