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);
}
);
我在这种情况下陷入困境......我只是错过了一些明显的东西?有人有什么想法吗?感谢的
答案 0 :(得分:2)
为什么不使用$ timeout而是尝试使用$ interval并将其设置为运行一次?
var interval = $interval(function() {
angular.element('#fileInput').trigger('click');
}, 100,1);