0

创建这样的东西会有什么(如果有的话)问题:

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);
4

0 回答 0