在Meteor.template.rendered中,如何在呈现所有内容后(在{{{each}}循环完成后)进行调用

在Meteor.template.rendered中,如何在呈现所有内容后(在{{{each}}循环完成后)进行调用,meteor,handlebars.js,Meteor,Handlebars.js,嗨,我有这个模板 <template name="users"> {{#each user}} <li id="{{_id}}"> <input type="checkbox" checked /> <span><select name="colorpicker"> {{#each color}} <option

嗨,我有这个模板

<template name="users">
   {{#each user}}
    <li id="{{_id}}"> 
        <input type="checkbox" checked /> 
        <span><select name="colorpicker">
                {{#each color}}
                  <option value="{{mColorCode}}" {{selected ../mColor mColorCode}}>{{mColorName}}</option>
                {{/each}}
              </select>
        </span>
        <img width="40"  src="data:image/png;base64,{{mImage}}" />  
        <span class="name">{{mUsername}}</span>
        <p><span class="description">{{mDescription}}</span></p>  
    </li>  
    {{/each}}
</template>
问题有时是它不工作(有时调用是在dom准备就绪之前进行的)

我想在渲染完所有内容后调用这个插件。不是每个添加的用户,我如何才能做到这一点


谢谢

我发现Meteor渲染模板的频率有点滑稽,jQuery函数最终可能会生成

我开始添加
console.log(“用户渲染”)
以了解触发渲染回调的次数和时间

有一件事我取得了一些成功,那就是将该模板包装到另一个模板中,然后将回调绑定到外部模板。大概是这样的:

<template name="container">
    {{> users}}
</template>
<template name="users">
   {{#each user}}
    <li id="{{_id}}"> 
        <input type="checkbox" checked /> 
        <span><select name="colorpicker">
                {{#each color}}
                  <option value="{{mColorCode}}" {{selected ../mColor mColorCode}}>{{mColorName}}</option>
                {{/each}}
              </select>
        </span>
        <img width="40"  src="data:image/png;base64,{{mImage}}" />  
        <span class="name">{{mUsername}}</span>
        <p><span class="description">{{mDescription}}</span></p>  
    </li>  
    {{/each}}
</template>

不完全确定它为什么有效,但对我来说,希望有人能照亮我们两个

这是我使用的解决方案,也是一种黑客攻击,如果有人有更好的解决方案,请发布

我所做的是将呈现的模板放入集合的subscribe的回调中

我的代码是这样的:

Meteor.subscribe('trackedUser',function(){
  Template.users.rendered = function(){
  ......
  }
}

我知道这是一个很老的帖子,但因为我有一个问题,我想我找到了一个更好的方法,在这里。从技术上讲,即使在呈现内容时,也会呈现包含的模板。在我的例子中,我试图初始化一个物化模式。为了让它工作,它必须做以下几点

template.html

<div class="row" id="eventResults">
  {{#each eventResults}}
    {{> eventResult}}
  {{/each}}
</div>

<template name="eventResult">    
  <div class="modal event" id="{{id}}">
    <div class="modal-content">
    ...

通过调用子元素的onRendered上的代码和使用
this.$(“…”)
,代码不会被调用多次,每个元素只调用一次。

这是一个聪明的解决方案,也是合乎逻辑的,因为当所有子元素都被渲染时,模板自然会被渲染,但它对我不起作用,不知道为什么。控制台记录了吗?你能看到一个模式在什么时候起作用,什么时候不起作用吗?例如,它第一次起作用,但之后就不起作用了…?它似乎是随机的,因为在每个模板中我都使用一个集合,所以在我看来,有时父模板完成渲染,但另一条记录被提取,子模板再次渲染
Meteor.subscribe('trackedUser',function(){
  Template.users.rendered = function(){
  ......
  }
}
<div class="row" id="eventResults">
  {{#each eventResults}}
    {{> eventResult}}
  {{/each}}
</div>

<template name="eventResult">    
  <div class="modal event" id="{{id}}">
    <div class="modal-content">
    ...
Template.eventResult.onRendered(function(){
  this.$('.modal-trigger').leanModal();