我有这段代码
Template.drone.onRendered(function () {
var userid = Meteor.userId();
$('.table > tbody > tr').each(function() {
var friendid = $(this).find("td:first").html();
var userid = Meteor.userId();
alert('this rendered inside each');
});
});
这是模板
Template name="drone">
<table class="table">
<thead>
<tr>
<th>Id</th>
<th>Names</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{{#each allusers }}
<tr>
<td class="buttonId">{{_id}}</td>
<td>{{profile.name}}</td>
<td class="buttonAction">hi</td>
</tr>
{{/each}}
</tbody>
</table>
</template>
上面的代码迭代一个表,并对表行中的数据执行一些有用的操作,即每个td中的id。
我想知道为什么这段代码alert('this rendered inside each');
永远不会触发。
答案 0 :(得分:0)
我打赌$('.table > tbody > tr')
与任何事都不匹配。
您正处于allusers
次迭代的“父”模板上下文中。在此阶段,您的tr
尚未呈现。
您应该尝试使用名为userLine
的新模板:
<template name="userLine">
<tr>
<td class="buttonId">{{_id}}</td>
<td>{{profile.name}}</td>
<td class="buttonAction">hi</td>
</tr>
</template>
然后,将#each
替换为:
{{#each allusers }}
{{ >userLine }}
{{/each}}
现在,您可以在此新模板上使用onRendered
挂钩,它应该根据需要启动。