setIntervalVueで条件付きでいくつかの要素をポーリングしてレンダリングしようとしています。しかし、うまくいかないので、データをに設定しましtrueたが、DOM では何も起こりませんでした。
PS: CDN で Vue.js を使用しているため、アプリは VueCLI で作成されていません。
ここに私のHTMLがあります:
<div id="app">
<div class="container">
<h1 v-if="showtext">
text
</h1>
</div>
</div>
これが私のスクリプトです。ステータス 200 の応答が来ると、私のデータは true に切り替わります。コンソールで確認できますが、テキストが DOM でレンダリングされません。
var app = new Vue({
el: "#app",
data: {
polling: null,
showtext: false
},
methods: {
pollData() {
this.polling = setInterval(() => {
axios({
method: "get",
url: "https://jsonplaceholder.typicode.com/comments"
}).then(function(response) {
console.log(response);
if (response.status == 200) {
this.showtext = true
}
console.log(this.showtext)
});
}, 7000);
}
},
beforeDestroy() {
clearInterval(this.polling);
},
created() {
this.pollData();
},
});