angularjs - 对话框打开时 ngDialog 更改选项
问题描述
是否可以更改打开对话框的选项?
具体来说,我想设置showClose
,closeByEscape
和closeByDocument
to false
。
原因是我在对话框中有一个表单。单击Save时,我向服务器发出请求。同时,我禁用了按钮,并且还想确保在有响应之前不能关闭对话框。但我希望用户能够在单击Save之前轻松关闭对话框。
解决方案
我不确定您是否可以通过简单地更改这些属性的值来明确地做到这一点,因为它们似乎没有双向绑定。但是preCloseCallback
您可以设置一个属性以防止基于某些局部变量关闭。所以我要做的是,在请求之前,设置一些变量来指示请求正在进行中。请求完成后,重置该变量。然后,在 中preCloseCallback
,检查是否设置了该变量。这是一个简单的例子:
$scope.toggleCloseable = function() {
$scope.closeable = !$scope.closeable;
}
$scope.openDialog = function() {
ngDialog.open({
template: 'firstDialogId',
className: 'ngdialog-theme-default',
showClose: true,
scope: $scope,
preCloseCallback: function() {
return $scope.closeable;
}
});
}
这是一个简单的 plunker,其中该变量是通过在模式中按下按钮来设置的,但这可以在发出请求之前和之后轻松设置。您会看到,当closeable
标志为假时,关闭操作都不起作用,但当它为真时,它照常工作。
推荐阅读
- unity3d - 在脚本中使用来自链接游戏对象的组件
- asp.net-core-mvc - 如何在 Asp.net Core 2.1 Angular 模板中处理应用程序特定的逻辑
- excel - VBA。自动调整单元格高度不适用于合并单元格
- mysql - WordPress 元查询关系不起作用?
- json - Swift 4 JSON 解码 [字符串:任意]
- python - python 使用嵌套列表检查列表
- javascript - 如何将数据推送到值属性 HTML 中,就像 DataTables 中每个选定行的数组一样?
- matlab - 在 Matlab R2016a 中将单元类类型的输出转换为矩阵
- php - 如何在 laravel 5.6 中 35 天后自动软删除数据?
- javascript - 从第二个文本框中获取数据