【问题标题】:How to make timer in alpine.js app with time interval如何在 alpine.js 应用程序中使用时间间隔制作计时器
【发布时间】:2020-08-19 16:37:36
【问题描述】:

使用 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


    【解决方案1】:

    以下是否可行?

    您可能想要对 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>
    

    【讨论】:

    • 谢谢!看起来可行,但我们真的需要 time var 吗?
    • 是的,您需要存储 something 以便 Alpine.js 知道重新渲染。如果您愿意,那个“东西”可能是formattedTime
    • 很好的例子。你在哪里找到了 alpinjs 文档?
    • 我为这个项目做出了很多贡献,所以我想没有专门的文档。你会注意到大多数有趣的东西都是“只是 JS”。
    猜你喜欢
    • 2012-07-09
    • 2012-10-17
    • 2023-03-03
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    相关资源
    最近更新 更多