javascript - 页面加载后如何插入或更新 js-timestamp 组件?
问题描述
背景:我正在使用 SailsJS 框架来显示更新数据模型的时间戳。该框架来自他们称之为“parasails”的东西,它使用了 Vue.js。它提供了<js-timestamp :at="1573487792252">
组件来显示像“几秒钟前”这样的消息,随着时间的推移会自动更新。随着时间的流逝,“time since”消息将动态更新,因此它可能会显示“5 分钟前”之类的内容。与此同时,我的项目中的底层模型可以更新,并且更新通过 WebSocket 传递给浏览器。发生这种情况时,我想更新<js-timestamp>
以反映新的参考时间戳。
问题:当 HTML 首次加载时,parasails 将<js-timestamp>
元素替换为<span parasails-component="js-timestamp">
包含文字“自时间”消息而不是整数时间戳的元素。据推测,parasails 将该整数存储在 JavaScript 变量中。我曾尝试使用 JQuery 插入一个新的<js-timestamp>
但 parasails 并没有流行起来。该标签仍保留在 DOM 中,但不会使用“time since”消息进行更新。我可以从组件的源代码中看到,当时间戳小于 24 小时时js-timestamp
,它使用来获取“自时间”消息,但如果我使用它并手动替换文本,它不再自行更新moment(this.at).fromNow()
随着时间流逝。
问题:更新时间戳的正确方法是什么,以便 parasails(或 Vue.js 或其他)随着时间的推移继续更新消息?
解决方案
事实证明,我可以在与页面关联的 JavaScript 中定义一个变量,并将js-timestamp :at
属性设置为变量名而不是整数文字。然后当变量更新时,页面也会更新。
而不是这个:
<js-timestamp :at="1573487792252">
我现在使用这个:
<js-timestamp :at="model.updatedAt">
推荐阅读
- julia - 具有可变列表的 Julia 不可变结构
- sql - 在星型模式表中查找主键
- java - 无法调用 JLabel.setText(String),因为 JLabel 数组为空
- ios - GEM 错误 - google-api-client-0.38.0 需要 ruby 版本 ~> 2.4,与当前版本 ruby 3.0.2p107 不兼容
- java - Flink Python Datastream API Kafka Producer Sink Serializaion
- python - 获取段落的句子中的最大单词数Python
- c - 尝试对负数执行按位运算以在 C 中的第 31-16 位(32 位数)中生成 0
- coq - 目标中的一个假设与我之前定义的函数完全相同。我怎么能告诉 Coq 它们确实是一样的呢?
- python - 如何在python中求解这个齐次一阶微分方程?x*∂y/∂x=y+2x^3*sin^2(y/x)
- css - 阻止元素在窗口调整大小时移动