使用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控制台命令的输出,但没有时间间隔... 如何解决?
谢谢!
答案 0 :(得分:2)
以下工作吗?
您可能要对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>