Я работаю над проектом, используя HTML, SASS и JS с Webpack 5.74.0.
Я хочу использовать Bootstrap 5, чтобы сделать его складным, что я только что сделал. Поскольку я не мог заставить это работать, я попытался просто скопировать/вставить пример из документации, чтобы увидеть, что не так.
Вот пример:
<p>
<a class = "btn btn-primary" data-bs-toggle = "collapse" href = "#collapseExample" role = "button" aria-expanded = "false" aria-controls = "collapseExample">
Link with href
</a>
<button class = "btn btn-primary" type = "button" data-bs-toggle = "collapse" data-bs-target = "#collapseExample" aria-expanded = "false" aria-controls = "collapseExample">
Button with data-bs-target
</button>
</p>
<div class = "collapse" id = "collapseExample">
<div class = "card card-body">
Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.
</div>
</div>
Я использую функцию шаблона Webpack html-loader (doc), чтобы вставить файл HTML на страницу с помощью JS:
веб-пакет.config:
module: {
rules: [
...
{
test: /\.html$/i,
loader: 'html-loader',
}
]
}
Код JavaScript, отрисовывающий страницу:
import collapseExample from '../templates/collapseExample.html'
...
body.insertAdjacentHTML('beforeend',collapseExample)
//collapseExample being a string from the source code
При построении на странице отображаются две кнопки из примера, а div#collapseExample скрыта. Этот фрагмент кода точно такой же, как в примере документации, поэтому я не думаю, что здесь виноват html-loader.
Однако, когда я нажимаю любую из кнопок, ничего не происходит. В консоли нет ошибок, и div#collapseExample вообще не отображается. У меня была точно такая же проблема при попытке с моим собственным кодом (функция хорошо скрыта, но ничего не происходит, когда я нажимаю кнопку).
Я собирал как с помощью локального сервера (webpack serve --open --config {my Webpack config file}), так и когда Webpack помещает файлы сборки в dist. Проблема остается прежней. Я использую последнюю версию Firefox.
Что не так с тем, что я пытаюсь сделать? Спасибо за помощь.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Можете ли вы попробовать вручную инициализировать складной? возможно, он добавлен после того, как бутстрап добавит своих слушателей.
const bsCollapse = new bootstrap.Collapse('#myCollapse', {
toggle: false
})
Давайте также попробуем на событии click кнопок (в целях отладки)
var bsCollapse = new bootstrap.Collapse('#collapseExample', {
toggle: false
})
bsCollapse.toggle()
Хорошо, это работает! Пришлось добавить объявление bsCollapse сразу после добавления раздела коллапса. Спасибо !
Куда мне это положить? Я попробовал использовать глобальную переменную сразу после импорта шаблона, и я получаю эту ошибку в консоли:
this._config is undefined