2016-04-23 3 views
0

У меня есть две функции, одна для открытия диалогового окна и один для размещения данных на сервере, а затем закрыть окно, проблема я не могу закрыть окно, здесь нам кодзакрытия ngDialog в контроллере

vm.openCreateDialog = function() { 

       var Dialog = ngDialog.open({ 
        template: 'user/create', 
        className: 'ngdialog-theme-default' 
       }) 
      } 
vm.createUser = function() { 
      DataService.createUser(vm.user).then(function (response) { 
       $log.log('promise returned successfully') 
       Dialog.close(); 

      }).catch(function (e) { 
       $log.log('catch registration error') 

      }); 
} 

ответ

0

ngDialog.open() возвращает объект с идентификатором, идентификатор является идентификатор диалогового окна, я использую его, чтобы закрыть диалоговое окно, здесь работает код, если кто-то пришел к нему

vm.openCreateDialog = function() { 

       vm.Dialog = ngDialog.open({ 
        template: 'user/create', 
        className: 'ngdialog-theme-default', 

       }) 
       vm.dialogId = vm.Dialog.id; 
      } 

и от другая функция Я просто использовал идентификатор для закрытия диалога

ngDialog.close(vm.dialogId) 
0

В openCreateDialog вы присваиваете значение переменной Dialog, но она не будет доступна нигде, потому что она локальна для области openCreateDialog. Подробнее о том, как работают var, можно найти here.

Чтобы устранить проблему, Dialog должен быть видимым изнутри другой функции. Есть различные способы сделать это, но я бы просто поставить его на vm и доступ к нему оттуда:

vm.Dialog = ngDialog.open({ 
// ... 
vm.Dialog.close(); 

JSFiddle working example.

+0

Я сделал то же самое, что и ваш код, но получаю ошибку. Невозможно прочитать свойство «закрыть» неопределенного – Arash

+0

Возможно, версия отличается от того, что находится в документации? Скрипка с воспроизведенной проблемой поможет понять, почему это происходит. –

3

ngDialog.close() будет работать.

Из документа:

.close (идентификатор, значение) Метод принимает идентификатор Диалог как строковый аргумент к близко конкретного диалогового окна, если идентификатор не определен он закрывает все в настоящее время активные модальности (то же самое поведение как .closeAll()). Принимает необязательное значение для разрешения диалога с помощью (или всего диалога обещаний).

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