Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs ng选择按钮打开文件系统对话框两次_Angularjs_Ng File Upload - Fatal编程技术网

Angularjs ng选择按钮打开文件系统对话框两次

Angularjs ng选择按钮打开文件系统对话框两次,angularjs,ng-file-upload,Angularjs,Ng File Upload,所以我正在追踪一个我无法完全控制的bug。问题是,如果您有一个带有ng select的按钮,将浏览器调离焦点(单击桌面),然后双击该按钮,它会打开浏览器文件系统对话框两次,并丢弃第一个输入。问题是如何强制它只打开文件对话框一次 有关守则: <!-- Table Buttons --> <div class="container dashboard__table__action-items-container" ng-if="user.Welcomed"> <

所以我正在追踪一个我无法完全控制的bug。问题是,如果您有一个带有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文件上传的版本是12.2.9,chrome版本是52.0.2743.116。

所以我最终通过黑客破解解决了这个问题,但我仍然认为这是chrome和/或ng文件选择的一个缺陷。对于后代,如果将按钮包装在具有ngf select的div中,则可以手动取消事件传播的隔振

相关代码:

<!-- 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>
html:


你能创建一个JSFIDLE吗?它发生在演示页面上吗?是的,它发生在演示页面上。我将chome选项卡打开到演示页面。点击桌面上的焦点,然后双击“选择文件”按钮,它会打开两次。看起来像是Chrome中的一个bug。单击事件在该元素上触发两次。无论如何,上传按钮的正常使用是单击一次,因此很少期望用户双击上传按钮。
var meetingCreationClicked;
$scope.debounceMeetingCreation = function ($event) {
    if (meetingCreationClicked) {
        $event.preventDefault();
        $event.stopPropagation();
        return false;
    }

    meetingCreationClicked = true;

    $timeout(function(){
        meetingCreationClicked = false;
    }, 1000);
};