首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在每个循环完成集合中的呈现项后执行代码

在每个循环完成集合中的呈现项后执行代码
EN

Stack Overflow用户
提问于 2014-05-07 00:22:24
回答 1查看 249关注 0票数 0

我正在建立基本的聊天应用程序,只是为了尝试流星。当用户进入聊天频道时,向用户显示位于底部的最新消息是合乎逻辑的。现在,我正试图通过以下代码来实现这一点

模板管理器

代码语言:javascript
复制
Template.messages.rendered = function(){
  var message_container = this.find('.messages');
  var height = message_container.scrollHeight;
  $(message_container).animate({scrollTop: height}, 1000)
};

模板

代码语言:javascript
复制
<template name="messages">
   <div class="messages">
     {{# each messages}}
   {{> message}}
     {{/each}}
   </div>
</template>

问题是,正在执行模板管理器中的代码,但并不是所有消息都已呈现,因此导致不正确的高度和var高度。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-07 10:42:12

这与Discover图书的显微镜演示应用程序的瓶颈类似--呈现方法的问题是,当数据完成呈现的模板或填充数据之前呈现的模板时,无法确定是否会触发。解决方法可能是跟踪某些本地集合中的消息计数,或者仅仅跟踪变量,并在呈现的检查中检查当前邮件计数是否比以前更大。如果是这样,请向下滚动一个窗口。

这个方法在上面的第14章(如果我没有错的话)中使用。

简单的脏技巧可能只是测试呈现中的超时,但我不需要重新注释。

哦,还有一个肮脏的窍门是在页面的dom树的末尾添加一些不可见的元素,这样所有的新消息都应该被插入到它之前。然后,只需在此元素位置更改上添加事件处理程序即可。每次呈现新消息时,它都会将该元素推低一点,因此将触发一个事件。在该事件中,处理程序添加要向下滚动的代码。类似的解决方案可以找到这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23506675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档