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

            });
}
4

3 回答 3

3

ngDialog.close() 将起作用。

从文件:

.close(id, value) 方法接受对话框的 id 作为字符串参数来关闭特定的对话框窗口,如果没有指定 id,它将关闭所有当前活动的模式(与 .closeAll() 的行为相同)。采用可选值来解决对话承诺(或所有对话承诺)。

于 2016-06-12T08:22:06.877 回答
1

ngDialog.open() 返回一个带有 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)
于 2016-04-24T05:24:01.263 回答
0

openCreateDialog你为Dialog变量赋值,但它不能从其他任何地方访问,因为它是本地openCreateDialog的范围。更多关于var语句如何工作的信息可以在这里找到。

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

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

JSFiddle 工作示例

于 2016-04-23T14:14:41.377 回答