所以,我有一个处理文件上传的指令,(包含angular-file-upload),在某些情况下,这个指令包装了一个锚标记。当指令运行以下代码时,此锚标记的单击事件会导致$apply
已运行,其中.fileUploadInput
元素为<input type="file" />
:
fileUploadClick = (event: any) => {
this.element.find('.fileUploadInput').click();
};
为了解决这个问题,我把它包装在$timeout
:
fileUploadClick = (event: any) => {
this.$timeout(() => {
this.element.find('.fileUploadInput').click();
});
};
在Chrome 43(非FF / Safari)中,文件选择器在打开操作系统选择器之前需要多次单击事件。我可以看到每次都会运行超时内的函数调用,但只是间歇性地执行OS选择器。删除$timeout
会导致选择器每次都打开,但会导致$apply
正在进行中。
是否有人知道在Chrome中导致此行为会导致添加超时的原因是什么?或者,有没有办法停止现有$apply
或在$timeout
之外等待它的方法? $ interval会导致同样的问题。
谢谢,
马特