【问题标题】:How can I close just the one of the opened mdDialogs? AngularJs如何只关闭打开的 mdDialog 之一? AngularJs
【发布时间】:2020-01-06 11:05:33
【问题描述】:

我的应用程序中有 3 个打开的 mdDialogs(未嵌套在控制器中),其中 2 个将键“multiple”设置为 true,因此它们不会相互关闭。当我在其中一个调用 mdDialog.close() 或 mdDialog.hide() 时,两个子对话框都会隐藏。有没有办法一一关闭它们? [关闭]

【问题讨论】:

    标签: javascript angularjs angularjs-material mddialog


    【解决方案1】:

    查看“自定义预设”部分和下面的https://material.angularjs.org/latest/api/service/$mdDialog。您需要通过调用创建实例对象

    myPrompt = $mdDialog.prompt();
    

    myPrompt = $mdDialog.confirm(); 
    

    或创建自定义预设,然后在显示或关闭时使用该实例:

    $mdDialog.show(myPrompt);
    $mdDialog.close(myPrompt);
    

    这是页面中的一个部分:

    // Dialog #1 - Show simple alert dialog and cache
    // reference to dialog instance
    
    function showAlert() {
      alert = $mdDialog.alert()
        .title('Attention, ' + $scope.userName)
        .textContent('This is an example of how easy dialogs can be!')
        .ok('Close');
    
      $mdDialog
          .show( alert )
          .finally(function() {
            alert = undefined;
          });
    }
    

    【讨论】:

      【解决方案2】:
      $mdDialog.show({
        templateUrl: 'dialog.html',
        controller: 'DialogCtrl',
        skipHide:true
      })
      

      这对我有用。我正在使用 angularjs-material 1.1.0-rc5

      【讨论】:

        【解决方案3】:

        实际上这是一个愚蠢的错误,伙计们。如果我们只运行 $mdDialog.hide(),那么对于每个孩子都将“multiple”设置为 true 的堆叠对话框就足够了。在我的问题上,问题是我错误地调用了隐藏功能,因此我关闭了两个对话框。我不好的不必要的问题,但它可能对新人有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-11
          • 2013-03-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-13
          • 1970-01-01
          • 2020-09-27
          相关资源
          最近更新 更多