【问题标题】:How to close a ngDialog from angular controller如何从角度控制器关闭 ngDialog
【发布时间】:2015-11-19 05:01:32
【问题描述】:

我需要打开多个具有相同 id 的 ngDialog,当单击关闭按钮时,它应该只关闭当前打开的 ngDialog。

为了关闭 ngDialog,我需要调用一个事件来收集数据然后关闭 ngDialog。

【问题讨论】:

    标签: ng-dialog


    【解决方案1】:

    这取决于您是尝试关闭它(1)从它自己的控制器,还是(2)实例化它的控制器:

    (1) 从它自己的控制器:

    scope.closeThisDialog(value);
    

    见文档:https://github.com/likeastore/ngDialog

    (2) 从实例化它的控制器:

    var dialog = ngDialog.open(); 
    // for closing the dialog call dialog.close()
    

    正如 Satish Salvador 的回复所述。

    干杯!

    【讨论】:

      【解决方案2】:

      将 ngDialog.open() 分配给 var dialog = ngDialog.open(); 之类的变量以关闭对话框调用 dialog.close()

      【讨论】:

      • 如果您从同一个函数关闭对话框,这是正确的,但是如果您从一个函数打开对话框,如何在另一个函数中关闭它?
      • @MichaelFulton 你找到解决方案了吗?
      • @HumanLove 是的,通过禁用动画,我的问题得到了很好的解决。我已经发布了答案。您可以在创建对话框时指定 disableAnimations 选项。此处描述的问题线程github.com/likeastore/ngDialog/issues/…
      • @Arash 您可以在函数外部使用 var 对话框,使用 var 对话框检查函数调用时的对话框状态并执行您的操作
      【解决方案3】:

      在某些情况下,您可以通过在创建对话框时指定 disableAnimation 选项来避免此问题:

      ngDialog.open({
        template: 'template.html',
        appendClassName: 'ngdialog-custom',
        disableAnimation: true
      });
      

      【讨论】:

      • 它在我的情况下有效,但我想知道确切的原因。 @michael-fulton 你能解释一下吗?
      【解决方案4】:

      你可以使用.getOpenDialogs()

      ngDialog 对象上有一个名为 getOpenDialogs 的方法。您可以使用此功能获取所有已打开对话框的列表,并通过在“选定”对话框上调用 .close() 来关闭您感兴趣的对话框。

      【讨论】:

        【解决方案5】:

        除了closeThisDialog(),您还可以:

        vm.myDialog = ngDialog.open(... omissis ...);
        ...
        vm.myDialog.close();
        

        vm.myDialog = ngDialog.open(... omissis ...);
        ...
        ngDialog.close(vm.myDialog.id);    
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-06-05
          • 2015-04-14
          • 2016-02-26
          • 1970-01-01
          • 1970-01-01
          • 2015-06-02
          • 1970-01-01
          相关资源
          最近更新 更多