次のように、ウィジェットのコントローラー コードにいくつかの setInterval 値を設定しています。
define(['durandal/widget'],function (widget) {
var count = 0;
var intervals = [],
ctor = function (element, settings) {
this.settings = settings;
};
ctor.prototype.updateCount = function( ){
var interval = setInterval(function () {
count = count + 1;
return count;
}, 1000);
intervals.push(interval);
}
return ctor;
}
上記のコードは、次のようなビュー内の forEach ループ内で実行されています。
<div data-bind="foreach: {data: settings.items}">
<span class="count" data-bind="text:$parent.updateCount()"></span>
</div>
私がやりたいのはclearInterval
、ウィジェットが破棄されたとき、または基本的に dom から削除されたときに、intervals 配列内のすべてのアイテムに対してメソッドを呼び出すことです。ビューモデルの非アクティブ化を使用してこれを実行できることはわかっていますが、再利用性の観点から、ウィジェット自体で間隔のクリアを処理したいと考えています。Durandal のウィジェット モジュールでこれを達成する方法はありますか。