在打开的 Bootstrap 4 模式中更新选项/配置

问题描述 投票:0回答:3

我正在将模态从 Bootstrap 3 升级到 4。我有一些代码将更新打开模态的选项(特别是背景和键盘选项)。在 Bootstrap 3 中,我通过运行以下命令完成了此操作:

$('.modal').data('bs.modal').options.backdrop = newBackdropValue;
$('.modal').data('bs.modal').options.keyboard = newKeyboardValue;

当我将其升级到 Bootstrap 4 时,我收到了

options
未定义的错误。然后我尝试将其移至使用
_config
,因为这似乎是这些选项现在所在的位置,但它实际上并未更新模式的行为。

在查看 Bootstrap 4 代码时,我注意到它调用了

_setEscapeEvent
,它似乎在键盘上放置了一个侦听器,但我找不到删除此侦听器的公共函数。

在我开始研究并尝试在 Modal 上使用私有方法之前,希望了解人们如何做到这一点。

javascript twitter-bootstrap bootstrap-modal bootstrap-4 twitter-bootstrap-4
3个回答
0
投票

用于禁用

$('#modal').off('keydown.dismiss.bs.modal');

用于启用

$('#modal').on('keydown.dismiss.bs.modal', function(event) {
  if (event.which === 27) {
    event.preventDefault();
    $('#detailselector').modal('hide')
  }
});

0
投票
let modal; //assuming you assign your modal into this variable
let bootstrapInstance = bootstrap.Modal.getInstance(modal);
bootstrapInstance._config.keyboard = false; // or true

-1
投票

您应该能够使用数据中的

_config
对象来更新模态。只需确保在显示模式之前完成即可...

演示:https://codeply.com/go/DhB7TXVdfc

$('#myModal').on('show.bs.modal',function(){
    // change the options that were set in data-attributes
    $('#myModal').data("bs.modal")._config.backdrop = false;
    $('#myModal').data("bs.modal")._config.keyboard = false;
});

还要记住,模式必须具有

tabindex="-1"
才能使 ESC 键盘选项起作用!

© www.soinside.com 2019 - 2024. All rights reserved.