Angularjs $ timeout生成无限循环

时间:2014-09-26 15:00:12

标签: javascript jquery angularjs timeout settimeout

HY 我有一个模拟输入文件按钮的div。 为此,我做了

angular.element('#fileInput').trigger('click');

但是这会生成一个Apply已在进行中的错误,谷歌搜索我发现这很容易避免将代码置于超时之内。

timeOut = $timeout(function(){
        angular.element('#fileInput').trigger('click');
    });

作为一个真正解决问题的效果,但是如果我的弹出框被禁用,$ timeout会产生无限循环打开无限文件对话框。在AngularJS文档中,您可以清楚地看到$ timeout是setTimeout的包装器,它应该只生成对回调函数的一次调用,那么为什么它会生成无限循环? 然而,试图解决这个问题我决定在第一次通话后杀掉计时器,但我无法管理,

timeOut = $timeout(function(){
    angular.element('#fileInput').trigger('click');
});
timeOut.then( function( ){$timeout.cancel(timeOut);
    }
);

我在这种情况下陷入困境......我只是错过了一些明显的东西?有人有什么想法吗?感谢的

1 个答案:

答案 0 :(得分:2)

为什么不使用$ timeout而是尝试使用$ interval并将其设置为运行一次?

var interval =  $interval(function() {
    angular.element('#fileInput').trigger('click');
}, 100,1);