1

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

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

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

这是在线演示: 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');

    };

}

我已经使用 angular bootstrap v0.2.0 和 v.0.3.0 进行了尝试,所以它要么是一个错误,要么是我在如何编写逻辑方面缺少一些东西。

4

1 回答 1

1

事实证明这是核心对话框指令的问题。提交了一个问题和随后的拉取请求以解决:

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

于 2013-05-03T13:19:28.717 回答