如何在 alpine.js 应用程序中使用时间间隔制作计时器
How to make timer in alpine.js app with time interval
使用 alpine.js 2 我尝试在应用程序的页脚(为所有布局设置)中定义计时器:
<div>
<div x-data="appFooterComponent()" x-init=" console.log('initTimer()::'); refreshTime();
setInterval(refreshTime, 1000) ; console.log('END initTimer::');">
<div >
...
<span style="background-color: yellow" x-text="refreshTime(@this)"></span>
</div>
</div>
</div>
<script>
// THAT DOES NOT WORK
// this.refreshTime()
// setInterval(refreshTime, 1000)
function appFooterComponent() {
return {
refreshTime() {
return moment(new Date()).format('DD MMMM, YYYY HH:mm:ss')
},
}
}
</script>
因此,当打开任何新页面时,我会看到当前日期时间是如何设置的,但没有间隔,时间也不会刷新。
在控制台中,我看到了 x-init 控制台命令的输出,但没有看到时间间隔...
如何解决?
谢谢!
下面的方法行得通吗?
你可能想用 Alpine.js 做的是有一个你更新的 time
变量(使用 setInterval),然后你可以使用 this.time
和相关的读取格式化时间Moment.js表达式。
<div>
<div x-data="appFooterComponent()" x-init="init()">
<div>
...
<span style="background-color: yellow" x-text="getTime()"></span>
</div>
</div>
</div>
<script>
function appFooterComponent() {
return {
time: new Date(),
init() {
setInterval(() => {
this.time = new Date();
}, 1000);
},
getTime() {
return moment(this.time).format('DD MMMM, YYYY HH:mm:ss')
},
}
}
</script>
使用 alpine.js 2 我尝试在应用程序的页脚(为所有布局设置)中定义计时器:
<div>
<div x-data="appFooterComponent()" x-init=" console.log('initTimer()::'); refreshTime();
setInterval(refreshTime, 1000) ; console.log('END initTimer::');">
<div >
...
<span style="background-color: yellow" x-text="refreshTime(@this)"></span>
</div>
</div>
</div>
<script>
// THAT DOES NOT WORK
// this.refreshTime()
// setInterval(refreshTime, 1000)
function appFooterComponent() {
return {
refreshTime() {
return moment(new Date()).format('DD MMMM, YYYY HH:mm:ss')
},
}
}
</script>
因此,当打开任何新页面时,我会看到当前日期时间是如何设置的,但没有间隔,时间也不会刷新。 在控制台中,我看到了 x-init 控制台命令的输出,但没有看到时间间隔... 如何解决?
谢谢!
下面的方法行得通吗?
你可能想用 Alpine.js 做的是有一个你更新的 time
变量(使用 setInterval),然后你可以使用 this.time
和相关的读取格式化时间Moment.js表达式。
<div>
<div x-data="appFooterComponent()" x-init="init()">
<div>
...
<span style="background-color: yellow" x-text="getTime()"></span>
</div>
</div>
</div>
<script>
function appFooterComponent() {
return {
time: new Date(),
init() {
setInterval(() => {
this.time = new Date();
}, 1000);
},
getTime() {
return moment(this.time).format('DD MMMM, YYYY HH:mm:ss')
},
}
}
</script>