2013-05-01 69 views
1

我想从实际对话框控制器的视图中关闭并重新打开一个对话框。结果发生的是在对话框关闭/打开后,它不会再正常关闭。在某些浏览器上可以使用Escape(但叠加层仍然存在)并单击背景可能会导致对话框关闭,但覆盖层将保留(依赖于浏​​览器)。Angular UI对话框 - 从对话框中关闭并重新打开导致背景

问题:如何关闭/重新打开对话框控制器上某个功能/按钮/事件的对话框,以及对话框的关闭是否正常工作(在退出或单击背景上)。

下面的演示只是一个简化的示例,演示了这个问题,因为我将在下一个/ prev中执行操作,并且希望关闭/打开这些单击操作,但遇到此问题无法退出模态。

这里是在线演示:http://plnkr.co/h8djNiSlH6c7d8SNzMmb

  1. 打开对话框
  2. 关闭对话框 - 工作正常,除了IE(另一个问题)。内部对话
  3. 打开对话框
  4. 点击按钮,关闭/重新
  5. 尝试关闭该对话框

控制器:

function PopupCtrl($scope, $dialog, dialog, item, Utils) { 

    $scope.items = Utils.getItems(); 
    $scope.item = item; 
    $scope.reOpen = function (item) { 
     item = $scope.items[1]; 
     dialog.close(); 
     var d = $dialog.dialog({ 
      dialogFade: true, 
      backdropClick: true, 
      dialogOpenClass: 'modal-open', 
      resolve: { 
       item: function() { 
        return angular.copy(item) 
       } 
      } 
     }); 
     d.open('dialog.html', 'PopupCtrl'); 
    }; 
} 

function MainCtrl($scope, $window, $dialog, $location, $timeout, Utils) { 
    $scope.items = Utils.getItems(); 

    $scope.openDialog = function (item) { 
     item = $scope.items[0]; 
     var d = $dialog.dialog({ 
      dialogFade: true, 
      dialogOpenClass: 'modal-open', 
      resolve: { 
       item: function() { 
        return angular.copy(item) 
       } 
      } 
     }); 
     d.open('dialog.html', 'PopupCtrl'); 

    }; 

} 

我和角度引导v0.2.0尝试这个和v.0.3.0所以它是一个错误,或者我缺少关于如何编码逻辑的信息。

+0

也就是说一些野生的东西。我认为有一些范围冲突(如PopupCtrl超出了范围dialog.close()),所以我试图将对话框打开代码移动到一个服务,并在setTimeout后调用它,但是当我这样做时,没有新的对话框打开,就好像PopupCtrl中的$ dialog在关闭之后以某种方式被污染了一样。 – Langdon 2013-05-01 14:20:30

+0

是的,我只是想不出来。这些动画在chrome和ie中看起来很好,但在FF中却不是那么多,但这只是一个问题 – lucuma 2013-05-01 14:25:38

+0

我最终提出了一个问题并且对该项目提出了请求。 – lucuma 2013-05-01 22:10:52

回答