Bootstrap angular-ui 模式使滚动条消失

Bootstrap modal on angular-ui makes scrollbar vanish

我正在我的指令代码中打开一个模式,如下所示:

var modalInstance = $modal.open({
      templateUrl: "app/templates/modal-assign.html",
      controller: "assignModalController",
      resolve: {
        "call": function() {
          return $scope.call;
        }
      }
    });

但是我对我的 assignModalController 进行了验证,我需要关闭我的模式: AssignValidatorService.validateOpeningModal($scope).then(函数(验证){ 如果(!validation.isValid){ $scope.handleCancel(validation.msg); } $rootScope.setBusyIndicator(假); }, 功能() { $rootScope.setBusyIndicator(假); });

和我的 handleCancel:

$scope.handleCancel = function(message) {
  $log.info(filename + " - handleCancel");
  $modalInstance.dismiss(message);
};

所以,模态窗口正常关闭,但屏幕滚动条消失了。

经过长时间寻找答案,我发现 bootstrap 在 <body> 标签中添加一个 class modal-open。当此模式关闭时,bootstrap 应该从 <body> 中删除 class。我检查了 DOM 并在 <body> 中看到了模态打开 class,我手动删除并重新出现了屏幕滚动条。

我尝试通过 handleCancel 函数中的代码以多种方式删除 class,如下所示:

$scope.handleCancel = function(message) {
  $log.info(filename + " - handleCancel");
  angular.element(document).find("body").removeClass();
  $modalInstance.dismiss(message);
};

...但没有成功!

有什么想法吗?

花了很长时间后我得到了我的解决方案:

$scope.handleCancel = function(message) {
  $log.info(filename + " - handleCancel");
  $timeout(function(){
      $modalInstance.dismiss(message);
  }, 500);    
};

可能 bootstrap 到 add/remove 模态打开 class 的过程在中间,我触发关闭该模态,并添加 class 并且没有'删除。所以我推迟了解雇行动,现在一切正常

:D

谢谢!