所以我正在追踪一个我无法解决的错误。问题是,如果你有一个带有ng-select的按钮,取消浏览器的焦点(点击桌面),然后双击按钮,它会打开浏览器文件系统对话框两次,丢掉第一个输入。问题是如何强制它只打开文件对话一次。
相关代码:
<!-- Table Buttons -->
<div class="container dashboard__table__action-items-container" ng-if="user.Welcomed">
<button class="btn btn-primary" ngf-select="onFileSelect($files)" ngf-multiple="true" style="margin-right: 15px;">
<i class="fa fa-cloud-upload fa-3" style="margin-right: 4px"></i> Upload Meeting
</button>
...
</div>
编辑: 我用几个浏览器测试了这个行为并且它没有发生(firefox,safari,opera)。这只发生在chrome上。 ng-file-upload的版本是12.2.9,chrome版本52.0.2743.116。
答案 0 :(得分:1)
所以我结束了#34;解决&#34;这是通过黑客攻击它,但我仍然认为它是chrome和/或ng-file-select的错误。对于后代,如果您将按钮包含在具有ngf-select的div中,则可以手动去抖动事件传播。
相关代码:
HTML:
<div ngf-select="onFileSelect($files)" ngf-multiple="true" style="width: 0;">
<button class="btn btn-primary" ng-click="debounceMeetingCreation($event)" style="margin-right: 15px;">
<i class="fa fa-cloud-upload fa-3" style="margin-right: 4px"></i> Upload Meeting
</button>
</div>
在控制器中:
var meetingCreationClicked;
$scope.debounceMeetingCreation = function ($event) {
if (meetingCreationClicked) {
$event.preventDefault();
$event.stopPropagation();
return false;
}
meetingCreationClicked = true;
$timeout(function(){
meetingCreationClicked = false;
}, 1000);
};