对话框打开时ngDialog更改选项

时间:2018-10-11 11:11:48

标签: angularjs ng-dialog

是否可以更改打开对话框的选项?

具体地说,我想将showClosecloseByEscapecloseByDocument设置为false

原因是我在对话框中有一个表单。单击保存时,我向服务器发出请求。同时,我禁用了按钮,并且还希望确保在收到响应之前,对话框无法关闭。但我希望用户在单击保存之前能够轻松关闭对话框。

1 个答案:

答案 0 :(得分:1)

我不确定您是否可以通过简单地更改这些属性的值来明确地执行此操作,因为它们似乎并没有双向绑定。但是您可以设置一个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;
      }
    });
  }

这是一个简单的插件,可以通过在模式中按下按钮来设置该变量,但这可以在发出请求之前和之后进行设置。您将看到closeable标志为false时,所有关闭操作均无效,但为true时,它将照常运行。

https://plnkr.co/edit/d4m0tryFdm8vWWgh7a4j