Javascript 在“文件”对话框之前允许模式对话框
我想延长概述的指令 本质上-我想做的是,当用户按下“打开文件”文件输入时,它将显示一个“这将放弃更改”模式对话框 如果用户按下“取消”,则不应显示“文件”对话框,但如果按下“继续而不保存”或“保存更改并继续”,则只应显示“选择文件”对话框 我希望能够将模态创建函数作为一个指令参数传递,以便在打开文件对话框之前使用不同的模态 用法示例:Javascript 在“文件”对话框之前允许模式对话框,javascript,angularjs,file-io,event-bubbling,Javascript,Angularjs,File Io,Event Bubbling,我想延长概述的指令 本质上-我想做的是,当用户按下“打开文件”文件输入时,它将显示一个“这将放弃更改”模式对话框 如果用户按下“取消”,则不应显示“文件”对话框,但如果按下“继续而不保存”或“保存更改并继续”,则只应显示“选择文件”对话框 我希望能够将模态创建函数作为一个指令参数传递,以便在打开文件对话框之前使用不同的模态 用法示例: <label class="btn btn-default" for="fileOpen"> Open File </label>
<label class="btn btn-default" for="fileOpen">
Open File
</label>
<input
style="display: none"
type="file"
fileread="onFileRead"
id="fileOpen"
name='file'
prefn="openModal"
/>
按原样-问题在于模式与“打开文件”对话框同时出现
我们可以使用event.preventDefault()阻止文件对话框打开代码>(取消注释),但我不知道如何恢复“更改”事件
是否可以手动触发更改事件 您想单击另一个按钮,而不是文件输入标签。用户将看不到文件输入或其标签
然后,在确认模式。。。触发对文件输入的单击
下面使用从模态控制器到指令的角度事件广播
在指令replaceelement.bind('单击…
:
scope.$on('init-file-select', function(){
element[0].click();
});
在模态控制器中,开始修改如下所示:
app.controller("AbandonChangesModalCtrl", function($scope, $modalInstance, $rootScope){
$scope.yes = function(){
// this could also be done from main controller in `result` promise callback
$rootScope.$broadcast('init-file-select')
$modalInstance.close('yes');
}
如果我想有多个打开的文件对话框怎么办?我想我可以将事件名称作为属性传入。
scope.$on('init-file-select', function(){
element[0].click();
});
app.controller("AbandonChangesModalCtrl", function($scope, $modalInstance, $rootScope){
$scope.yes = function(){
// this could also be done from main controller in `result` promise callback
$rootScope.$broadcast('init-file-select')
$modalInstance.close('yes');
}