ruby-on-rails 使用Bootstrap 5.0.0和Webpacker进行动态模态分析

vyswwuz2  于 2023-03-04  发布在  Ruby
关注(0)|答案(1)|浏览(122)

从Bootstrap 5.0.0开始,Bootstrap JS文件似乎必须在<body>结束时加载,以便呈现动态加载的模态(可能还有其他功能)。
同意这个问题。这发生在bootstrap 5.x生产版本中,不管你如何初始化模态。通过JS或通过Data属性动态地初始化。
目前解决这个问题的方法是在HTML主体而不是头部加载bootstrap.bundle.js,但理想情况下这不是这个问题的解决方案。
您是否知道此问题的其他解决方法?
错误:

// Error happens when I want to display a Modal using JS

var modal = new bootstrap.Modal(document.getElementById('my-modal');
modal.show();

// Uncaught TypeError: BACKDROP: Option "rootElement" provided type "null" but expected type "element".
//    typeCheckConfig bootstrap.bundle.js:190
//    typeCheckConfig bootstrap.bundle.js:184
//    _getConfig bootstrap.bundle.js:4603
//    Backdrop bootstrap.bundle.js:4539
//    _initializeBackDrop bootstrap.bundle.js:4864
//    Modal bootstrap.bundle.js:4721
//    <anonymous> debugger eval code:2

A溶液:
最简单的解决方法是在<body>标记的末尾加载我们的JS:

# app/views/layout/application.html.erb

<body>
  <%= yield %>
  <%# this `javascript_pack_tag` is initially inside the `<head>` tag
  <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</body>
pinkon5k

pinkon5k1#

我也遇到过类似的问题,我使用class=“container”div,然后将其更改为〈div class=“container-fluid”div,突然我的模态不再工作了。
我使用的是Bootstrap 5,bootstrap.bundle.min.js加载在html文件的头部分。
我解决这个问题的“变通方法”是将“content-fluid”类div放在“modal”类div之后。老实说,我不太明白为什么它现在可以工作,但它确实可以
希望有用。

相关问题