закрытие ngDialog в контроллере

0

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

 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')

            });
}
Теги:
ng-dialog

3 ответа

0
Лучший ответ

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

 vm.openCreateDialog = function () {

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

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

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

  ngDialog.close(vm.dialogId)
3

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

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

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

0

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

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

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

Рабочий пример JSFiddle.

  • 0
    Я сделал так же, как ваш код, но я получаю ошибку. Не могу прочитать свойство 'close' из неопределенного
  • 0
    Может версия отличается от той, что есть в документации? Скрипка с воспроизведенной проблемой поможет точно понять, почему это происходит.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню