【发布时间】:2021-08-15 22:55:45
【问题描述】:
我在可滚动的 div 中显示存储在数组中的项目列表。
<div id="historybox" class = "overflow-auto row h-75 border border-primary">
<div class="col">
<ul>
<li repeat.for="line of history">
<strong>${line.label}</strong> : ${line.text}
</li>
</ul>
</div>
</div>
我想要这样当一个新项目被添加到历史数组时,历史框 div 会向下滚动到底部。
我尝试在变量中添加@observable标签,然后添加以下方法:
historyChanged(newValue, oldValue) {
$('#historybox').scrollTop($('#historybox')[0]?.scrollHeight ?? 0);
}
当添加新项目时,这确实会向下滚动列表。但它只会将其滚动到列表中的倒数第二项,而不是最后一项。
我怀疑这是因为 historyChanged 函数在历史列表更改之后但在页面实际更新之前运行。在调用 scrollTop 之前添加 100 毫秒的延迟似乎可以解决它,但这似乎不是一个理想的解决方案。所以我想知道这样做的“正确”方法是什么。
【问题讨论】:
-
Yes it does. 但是是的,我可能应该使用
$('#historybox').prop('scrollHeight')。虽然这并不能解决我的问题。 -
我的立场是正确的 - 这是我不知道的一点语法糖:)
标签: javascript jquery typescript aurelia