我在我的小部件的控制器代码上设置了一些 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 中删除时调用间隔数组中所有项目的方法。我知道我可以使用 viewModel 上的 deactivate 来做到这一点,但从可重用性的角度来看,我希望小部件本身能够处理间隔的清除。有什么方法可以使用 Durandal 中的小部件模块来实现这一点。