如何在数据更新失败时阻止关闭对话框

时间:2016-11-01 20:29:42

标签: angularjs ng-dialog

我开始使用ngDialog但我似乎无法弄清楚如何在数据更新操作期间出现错误时阻止对话框关闭。

        ngDialog.openConfirm({
            scope: $scope,
            template: 'detailsTemplate'
        }).then(
            function () {
                //stop dialog when data insert fails
            },
            function () {
                //cancel clicked
            }
        );

在我看来,对于任何应用程序来说这都是非常常见的要求,但我看到的样本都没有解决这个问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你把AJAX逻辑放在哪里? 一旦AJAX成功,您可以手动关闭对话框,将您的AJAX逻辑放入对话框的Ctrl而不是.then方法。

供您参考的小例子:

https://jsfiddle.net/ramseyfeng/3spbjpt8/3/

var myApp = angular.module('myApp',['ngDialog']);

myApp.controller('MyCtrl', function ($scope, ngDialog) {
        $scope.names = [];
    $scope.openDialog = function(){
        ngDialog.open({
        scope: $scope,
        template: 'templateForm',
        closeByDocument: false,
        controller: 'PopUpController'
      });
    }
});
myApp.controller('PopUpController', function($scope, ngDialog){
    $scope.cancel = function(){
    $scope.closeThisDialog();
  };
  $scope.submit = function(){
    $scope.disable = true;
    //AJAX logic can be put here
    $scope.names.push($scope.varName);

    //Do not call below sentence if AJAX is not success 
    $scope.closeThisDialog('cancel');


    $scope.disable = false;
  };
});