Angular UI对话框 - 从对话框关闭和重新打开会导致背景

时间:2013-05-01 13:46:23

标签: angularjs modal-dialog angular-ui-bootstrap

我正在尝试关闭并从实际对话框控制器的视图中重新打开一个对话框。最终发生的事情是,在对话框关闭/打开后,它将无法再次正常关闭。 Escape适用于某些浏览器(但覆盖仍然存在)并单击背景可能会导致对话框关闭但覆盖仍将保留(取决于浏览器)。

问题:如何从对话框控制器上的功能/按钮/事件关闭/重新打开对话框,并且对话框关闭正常(在转义或单击背景时)。

下面的演示只是一个简单的示例,演示了问题,因为我将做下一个/上一个,我想关闭/打开这些点击但是我遇到了这个问题而无法退出模态。

以下是在线演示:http://plnkr.co/h8djNiSlH6c7d8SNzMmb

  1. 打开对话框
  2. 关闭对话框 - 除了IE(另一个问题)以外工作正常。
  3. 打开对话框
  4. 点击对话框内的按钮关闭/重新打开
  5. 尝试关闭对话框
  6. 控制器:

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

    我用angular bootstrap v0.2.0和v.0.3.0尝试了这个,所以它或者是一个bug,或者我在编写逻辑方面缺少一些东西。

1 个答案:

答案 0 :(得分:1)

这是核心对话指令的问题。提交了一个问题和随后的拉取请求来解决:

详细信息:https://github.com/angular-ui/bootstrap/pull/381