【发布时间】:2015-05-13 22:33:57
【问题描述】:
一直在摸不着头脑,所以这是查看它的最简单方法 - 我正在使用这个:
Template.today.rendered = function() {
console.log(this.firstNode.children.length);
};
只需尝试获取假定呈现的项目数。模板如下所示:
<template name="today">
<div class="todaySlider">
{{#each dayOfWeek}}
{{> singleDay}}
{{/each}}
</div>
</template>
如果它很重要,singleDay 看起来像:
<template name="singleDay">
<div class="day {{isCurrent}}">
<h2 class="date">{{date}}</h2>
{{#each items}}
{{> item }}
{{/each}}
</div>
</template>
我正在尝试等待所有“singleDays”呈现,但是我记录的计数在刷新时通常不同。我会得到从 0 到正确值的任何值,我不明白为什么。这似乎是调用它的正确位置,我担心也许双“每个”太慢了?
我已经尝试过计时器(我真的不应该)甚至 DOM Mutation Observers(这看起来有点过头了),但肯定有一个纯粹的 Meteor 方法来解决这个问题,有什么想法吗?
【问题讨论】:
-
我真的很惊讶这会返回 0 以外的任何值。助手应该在
rendered回调之后触发,所以在此之前你的each将没有任何东西可以迭代和除了最初的div,您的模板将为空。我认为一个更重要的问题是,为什么你需要这个计数。 -
这不是我特别需要的计数。我实际上正在做的是尝试在“最后一项”上激活一个类,但我使用计数来查看它是否真的在每个“.day”完成渲染。如果结果低于“实际总数”,那对我没有用处。
-
流星中经常出现这个主题:“我想为这个项目做一些特别的事情”。问题是不清楚“最后一个”在动态更新项目列表中的真正含义。如果您将课程应用于任何给定时间恰好是最后一个项目,会有多糟糕?
-
没用。顾名思义,这些元素是“天”,我试图将“今天”(总是最后一个)设置为活跃。目前,它可能会将“中间”的某一天设置为活动的,或者根本不设置一个(以及偶尔设置正确的、最近的一天)。不一定要按顺序排列,它们确实有 ID,但我需要先呈现所有“.day”。
-
啊!我一直在阅读许多关于如何在模板呈现后执行一些 javascript 的类似问题,但没有令人满意的答案。 “.rendered”函数似乎具有“在 DOM 中创建,但未填充内容”的令人困惑和不满意的含义。 (我说的对吗?)模板内容完成时不应该调用一个简单的回调吗?