scroll - 如何滚动内容由 AngularDart 管理的 div?

标签 scroll dart angular-dart

我有一个 div拿着一些聊天记录。我想要 div内容满时滚动。我在另一个项目中使用 jQuery,但是 实现这一目标的正确 AngularDart 方法是什么?

简化一点,在我的 HTML 中我有

<div class="chatHistory">{{ctrl.text}}</div>

(使用样式 white-space:pre )并且在我的 Controller 中我有方法

void addToChatHistory(String msg) {
  text += msg;
  var elt = querySelector(".chatHistory");
  elt.scrollTop = elt.scrollHeight;
}

问题:
  • 此代码滚动 div内容但还不够,因为它设置了 scrollTop太快了;即,甚至在 .chatHistory 之前可以由 Angular 更新。
  • 此外,考虑到使用 querySelector,这个(部分)解决方案在风格上感觉不是很 Angular。 .

  • 我尝试设置 watchtext场,但这也太早了。建议?

    最佳答案

    对于第一个问题,您可以使用 Timer.run推迟滚动执行:

    Timer.run(() => elt.scrollTop = elt.scrollHeight);
    

    对于第二个问题,您可以注入(inject) Controller 管理的元素并使用 querySelector在上面 :

    MyController(Element e) : elt = e.querySelector('.chatHistory');
    

    关于scroll - 如何滚动内容由 AngularDart 管理的 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23406549/

    相关文章:

    angular - Angular Dart :将事件传递到另一个组件

    dart - AngularDart多选操作在JS模式下陷入无限循环

    javascript - 使用表格自动滚动多个 Div

    dart - 在 flutter 中我如何转换2018-12-03T15 :42:00Z to real date and time

    list - Flutter:使用来自另一个类的链接ID导入正确的颜色值

    flutter - 未处理的异常 : type 'Future<void>' is not a subtype of type 'Future<Photography>' on Firestore

    dart json.encode(data) 不能接受其他语言

    JavaScript 滚动事件

    Android ListView 滚动选中的项目

    jquery - bootstrap-select 与 JQuery slimscroll 显示错误