关闭控制器中的ngDialog

时间:2016-04-23 13:51:35

标签: angularjs ng-dialog

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

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

            });
}

3 个答案:

答案 0 :(得分:3)

ngDialog.close()将起作用。

来自文件:

  

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

答案 1 :(得分:0)

openCreateDialog中,您为Dialog变量指定了值,但无法从其他任何位置访问该值,因为它是openCreateDialog范围的本地值。有关var语句的工作原理的更多信息,请参见here

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

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

JSFiddle working example

答案 2 :(得分:0)

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)