【发布时间】:2013-02-11 06:54:36
【问题描述】:
我正在尝试在用户发布的 cmets 的响应式 {{#each}} 中淡入新元素。
我在https://gist.github.com/3119147 有一个非常简单的 cmets 部分的代码示例(不包括 textarea 和新的注释插入代码,但它非常样板。)。包括一个 CSS 的 sn-p,我在其中提供 .comment.fresh { opacity: 0; },然后在我的脚本中,我有:
Template.individual_comment.postedago_str = function() {
var id = this._id;
Meteor.defer(function() {
$('#commentid_'+id+'.fresh').animate({'opacity':'1'}, function() {
$(this).removeClass('fresh');
});
});
return new Date(this.time).toString();
};
这似乎是一个执行动画的糟糕地方。我的想法是,每次呈现新评论时,它都需要调用我所有的 Template.individual_comment.* 函数,这就是为什么我的动画会延迟其中一个。但是,每次插入 不同 集合(喜欢)时,Meteor 都会调用 Template.individual_comment.postedago_str()。这意味着我单击 Like 按钮,我的整个 cmets 列表会闪烁白色并淡入(非常烦人!)。
我阅读了 Meteor 文档并试图弄清楚如何更好地分割我的模板以便只有块会更新,并且我在所有看起来合理的地方添加了 id="" 属性.. 仍然是这个错误。有谁知道怎么回事?
TIA!
【问题讨论】:
-
嗨,迈克,您能否进一步简化您的要点,以便仅包含问题中涉及的核心元素?这会有所帮助。
-
@TomColeman:但是您需要其他行才能重现问题,对吧?也许他可以用最少的代码在线设置一个调试版本(我们可以在调试模式下进行检查)。
-
嗯,该模板中有很多元素可能会产生影响。简化为表现出相同行为的最简单示例会更容易推理。
-
我将在今天晚些时候整理一个准系统演示,Tom。但是实际上并没有太多......两个集合,一点HTML,以及JS中的一些模板助手。只是试图证明 Template.interaction 的东西似乎与 Template.individual_comment 的东西混淆了。
标签: dom callback rendering jquery-animate meteor