2016-11-01 9 views
0

私はngDialogで再生を開始しましたが、データ更新操作中にエラーが発生したときにダイアログが閉じるのを防ぐ方法がわかりません。データの更新が失敗したときにダイアログが閉じるのを防ぐ方法

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

それは私がこの問題に対処見たサンプルの任意のアプリケーションが、どれものために非常にcomon要件になるようにこれは私には思えます。

ご協力いただきますようお願い申し上げます。

+0

あなたは[キャッチをし、最終的に]実装することができます(https://developer.mozilla.org/en-US/docs/Web/JavaScript/参照/ Global_Objects/Promise)を使用して、エラーを処理すると約束していますか?モーダルが閉じられないようにするためにドキュメント内に何も表示されませんでした。 – Mickers

答えて

0

あなたはAJAXロジックをどこに配置しましたか? AJAXが成功すると、手動でダイアログを閉じることができます.AJAXロジックを.thenメソッドではなくダイアログのCtrlに配置します。

あなたの参照のため小さな例:

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; 
    }; 
}); 
関連する問題