2016-11-01 5 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/ Reference/Global_Objects/Promise) по вашему обещанию справиться с ошибкой? Я ничего не видел в документах, чтобы отключить модальный доступ. – Mickers

ответ

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; 
    }; 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^