Bootstrap Vue を使用してモーダル ウィンドウを表示する Vue CLI アプリ (Webpack テンプレート) を構築しています。次のように、Vue コンポーネントのフックからプログラムでモーダルを表示しようとしています (プログラムでモーダルを呼び出すには、 Bootstrap Vue のドキュメントを参照してください)。mounted()
<script>
export default {
name: 'ButtonComponent',
mounted() {
const showModal = sessionStorage.getItem('showModal');
if (showModal === 'yes') this.$refs.myModal.show();
}
}
</script>
これはうまくいきます。setTimeout()
ただし、次のような関数を導入すると、これを機能させることができません。
<script>
export default {
name: 'ButtonComponent',
mounted() {
const showModal = sessionStorage.getItem('showModal');
if (showModal === 'yes') setTimeout(() => this.$refs.myModal.show(), 3500);
}
}
</script>
3.5 秒後にモーダルが表示されないのはなぜですか? console.log()
タイムアウトが機能し、そこからメッセージを送信しようとしたため、それを知っています。タイマー内で Vue JS インスタンスが利用できないことが原因である可能性があると考えたので、 a を宣言しconst self = this;
て呼び出してみsetTimeout(() => self.$refs.myModal.show(), 3500);
ましたが、どちらも役に立ちませんでした。ここで何が欠けていますか?