创建这样的东西会有什么(如果有的话)问题:
scope.$interval = function(callback, duration){
var internalScope = this;
var interval = setInterval(function(){
if(callback()){
internalScope.$apply();
}
}, duration);
internalScope.$on("$destroy", function(){
clearInterval(interval);
});
return interval;
};
我必须运行我自己的 $apply,这我理解,但这可以节省我在设置间隔时到处监听 $destroy 事件的时间。我也不熟悉扩展范围。如果我将其应用于 $rootScope,整个系统中的每个范围/$scope 都会继承该功能吗?
虽然很小,但它会改变
var interval = setInterval(function(){
}, 100);
scope.$on("$destroy", function(){
clearInterval(interval);
});
至
scope.$interval(function(){
//return true to run the apply
}, 100);
作为另一个建议,同样的事情可以用 $timeout 来完成:
scope.$timeout = function(callback, duration){
var internalScope = this;
var interval = setTimeout(function(){
callback();
internalScope.$apply();
}, duration);
internalScope.$on("$destroy", function(){
clearTimeout(interval);
});
return interval;
};
导致
scope.$timeout(function(){
}, 100);