Я планирую сделать инфоэкран с помощью Vue. На данный момент у меня два взгляда.
Первый вид переходит ко второму виду через 10 секунд, и наоборот.
<template>
<div v-if="posts && posts.length">
<table>
<tr>
<th>Name</th>
<th>Start</th>
<th>Project</th>
<th>Activity</th>
</tr>
<tr v-for="post of posts">
<td>{{post.userName}}</td>
<td>{{post.start}}</td>
<td>{{post.projectName}}</td>
<td>{{post.activityName}}</td>
</tr>
</table>
</div>
<div v-else-if="errors && errors.length">
<h1>error connecting to API</h1>
</div>
<script>
import axios from "axios";
export default {
data() {
return {
posts: [],
errors: [],
interval: null
};
},
methods: {
loadData() {
axios
.get(
`http://myapi.com/infoscreen.php`
)
.then(response => {
this.posts = response.data;
})
.catch(e => {
this.errors.push(e);
});
}
},
created() {
this.loadData();
this.interval = setInterval(
function () {
this.$router.push({path: "/issues"});
}.bind(this),
10000
);
}
};
</script>
Код работает до сих пор, после 10 секунд происходит перенаправление на проблемы с маршрутом. После того, как маршрутные проблемы загружены через 10 секунд, он возвращается к странице активности страницы из примера кода.
Кажется, что все еще есть набор интервалов. Потому что теперь через 9.x секунд происходит перенаправление, и оно происходит все быстрее и быстрее, чем больше переадресаций происходит, пока не произойдет сбой браузера.
Так есть ли лучший способ сделать что-то вроде получения всех маршрутов из router.js и затем через 10 секунд перейти на следующую страницу?
Спасибо за вашу помощь.