Отказ от ответственности: Я только что заметил, что вы не используете vanilla Bootstrap, а его воплощение Vue.js.Я все равно оставлю это, поскольку это может помочь.
Я не вижу встроенного способа сделать это в Vue.Рассматривали ли вы что-то подобное в своем компоненте:
import $ from 'jquery';
// ...
mounted() {
$(this.$refs.myModal).appendTo('body');
// I guess you can still drive this.$refs.myModal even though it's not a child of this.$el
// after this point?
// Also cache this.$refs.myModal somewhere for below
},
updated() {
// Check if this.$refs.myModal is the same element as the cached element
// If not, it has been recreated so remove the cached node from "body" and:
$(this.$refs.myModal).appendTo('body');
},
beforeDestroy() {
$(this.$refs.myModal).appendTo(this.$el);
},
jQuery, конечно, не требуется, но вы уже используете его с Bootstrap, так почему бы не использовать его здесь.
Обновление
Я обнаружил, что эта проблема Github обсуждает эту же проблему: https://github.com/bootstrap-vue/bootstrap-vue/issues/1108
Очевидно, что перемещение элементов DOM за пределы компонентов Vue может иногда вызывать проблемы.См. Проблему для получения более подробной информации.
Также есть PortalVue , позволяющий перемещать компоненты.
См. Также: