在控制器中关闭 ngDialog

closing ngDialog in controller

我有两个功能,一个用于打开对话框,一个用于将数据发布到服务器然后关闭对话框,问题是我无法关闭对话框,这里是代码

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

            });
}

openCreateDialog 中,您将值赋给 Dialog 变量,但无法从其他任何地方访问它,因为它在 openCreateDialog 的范围内。有关 var 语句如何工作的更多信息,请参见 here

要解决此问题,Dialog 必须在其他函数内部可见。有多种方法可以做到这一点,但我只是将它放在 vm 上并从那里访问它:

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

JSFiddle working example.

ngDialog.open() return 一个带有 id 的对象,id 是对话框的 id,我用它来关闭对话框,这里是工作代码,如果有人来的话

 vm.openCreateDialog = function () {

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

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

在另一个函数中,我只是使用 id 来关闭对话框

  ngDialog.close(vm.dialogId)

ngDialog.close() 会起作用。

来自文档:

.close(id, value) Method accepts dialog's id as string argument to close specific dialog window, if id is not specified it will close all currently active modals (same behavior as .closeAll()). Takes an optional value to resolve the dialog promise with (or all dialog promises).