注意到:
刷新后已更新。但如果与帖子时间戳匹配,那会更合乎逻辑,帖子时间戳无需刷新即可更新。
这个很有意思,可能和我们的glimmer操作有关,@isaac
深入研究旧实现,我想知道这是否以前也存在问题……
const bottomAge = relativeAge(
new Date(topic.last_posted_at || topic.created_at),
{
addAgo: true,
defaultFormat: timelineDate,
}
);
const scroller = [
h(
"div.timeline-date-wrapper",
this.attach("link", {
className: "now-date",
rawLabel: bottomAge,
action: "jumpBottom",
})
),
];
这在 widget 的 html() 函数中被调用,看起来我们没有任何钩子可以在时间流逝时更新它。
显然,期望的功能是在创建帖子时使用最新日期更新 bottomAge,然后随着时间的推移自动更新它。我们现在可以做的是添加一个函数到
并在滚动时更新 bottomAge,但实际上感觉有点奇怪。这个想法的另一个问题是,很难将最新帖子的日期更新时间与主题时间轴上的 bottomAge 日期更新时间相匹配。帖子的相对 created_at 会滞后大约 10 秒……在滚动时造成不匹配。
理想情况下,我们可以跟踪帖子的相对 created_at 日期并将其插入时间轴,但我不知道这是否可能。
@david,你有什么想法吗?
是的,那将是理想的 ![]()
如果我们使用正确的 HTML 结构,随着时间的推移自动更新可以由我们的相对日期帮助程序 自动处理。
为了处理 topic.last_posted_at 值的更改,我们应该能够依赖 Glimmer 的响应性,而不是在滚动时执行操作。例如:
get bottomAge(){
return this.args.topic.get("last_posted_at") || this.args.topic.get("created_at");
}
然后在 hbs 中,我们可以使用 我们的相对日期帮助程序 来渲染它,以便自动更新的正确结构
{{age-with-tooltip this.bottomAge}}
可能需要对帮助程序进行一些改进,以便它能够支持 ‘addAgo’ 和 ‘defaultFormat’ 参数?
这将通过以下方式修复: