#vue.js #bootstrap-4 #bootstrap-vue
Вопрос:
В моем веб-приложении Vue Bootstrap (v2.21.2) я хочу использовать тосты, чтобы сообщить пользователю о некоторых ошибках. Эти ошибки создаются клиентом REST-API. В моих vb-компонентах я улавливаю эти ошибки и вызываю функцию, которая сама использует https://bootstrap-vue.org/docs/components/toast#toasts-on-demand this.$bvToast.toast()
для динамического создания и отображения сообщения об ошибке. Как и ожидалось, тост создается, но мгновенно снова скрывается. Я попытался отключить свойство автоматического скрытия и поиграть с тайм-аутом, но это не возымело никакого эффекта. Поскольку я вызываю эту функцию в некоторых компонентах, я также пытался вызвать this.$root.$bvToaster.toast()
, но тосты по-прежнему отображаются только в течение примерно 100 микросекунд или около того.
Соответствующий (сокращенный) код-выдержки из моего проекта:
Приложение.vue:
<template>
<div id="app">
<Navbar @viewChanged="view = $event;" />
<Pki v-if="view == 'pki'" />
</div>
</template>
<script>
import Navbar from "./components/Navbar.vue";
import Pki from './components/Certificates'
export default {
data() {
return {
view: null
}
},
name: "FooBar",
components: {
Navbar,
Pki
},
};
</script>
Сертификаты.vue:
<template>
<!-- ... -->
</template>
<script>
// ...
mounted() {
this.getCertificates();
},
methods: {
alert(title, content, variant = 'danger') {
this.$bvToast.toast(content, {
title: title,
toaster: 'b-toaster-bottom-right',
variant: variant,
solid: true,
appendToast: true,
autoHideDelay: 10000
});
},
getCertificates() {
axios.get("/v1/pki/certificates")
.then((response) => {
// ...
});
})
.catch((error) => {
this.alert('API Error', 'failed to fetch certificate list (' error.message ')');
console.log('getCertificates(): HTTP ERROR ' error.response.status ' (' error.response.data ')');
});
}
}
</script>
Комментарии:
1. Вы импортируете CSS начальной загрузки И начальной загрузки в свой проект? Я бы также дважды проверил, какую версию начальной загрузки вы установили.
2. Ах да, на самом деле знаю. Хотя я не знаю, почему. Я изначально создал скелет проекта с помощью vue-cli. импортируйте «загрузочный файл/dist/css/загрузочный файл.css»; импортируйте «загрузочный файл-vue/dist/загрузочный файл-vue.css»; импортируйте «загрузочный файл-vue/dist/загрузочный файл-vue-значки.min.css»;
3. Возможно, я неправильно сформулировал свой вопрос. Вы должны импортировать и то, и другое, так что то, что у вас есть, кажется правильным. Следующим шагом будет проверка версии начальной загрузки, которую вы установили.
4. Попался. Спасибо за разъяснение. Что касается начальной загрузки-версии, мой пакет.json определяет следующее: «начальная загрузка»: «^4.6.0», «начальная загрузка-vue»: «^2.21.2»,
5. BootstrapVue официально не поддерживает Bootstrap
4.6.0
, поэтому вместо этого вы можете попробовать понизить рейтинг до4.5.3
. Хотя я не думаю, что это все исправит. Я протестировал вашalert
метод на игровой площадке docs и решил поработать там.
Ответ №1:
Я думаю, что у вас нет соответствующей версии css начальной загрузки.
например, 4.5.3 загрузочный css и после загрузки начальной загрузки vue
Была та же проблема, и это решило ее
Комментарии:
1. Спасибо за ответ. Ты уверен? bootstrap-vue.org/docs определяет следующие версии: «Vue.js В2.6 требуется, В2.6.12 рекомендуется», «Бутстрап В4.3.1 не требуется, В4.5.3 рекомендуется», «BootstrapVue V2 релиз.21.2.» Я пытался как загрузочный 4.6.0 и 4.5.3, но это ничего не изменит
2. У меня есть следующее: Глава <link type=»text/css» rel=»stylesheet» href=» cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/… > <link type=» text=»» css»=»» rel=»stylesheet» href=»//unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue.min.css» /> Дно <script src=» cdn.jsdelivr.net/npm/vue@2.6.11″></script<>>