如何在流星中只渲染一个模板实例

Dan*_*y Y 2 templates meteor

嗨,我有以下模板:

<template name="users">
<ul id="item-list">  
   {{#each trackedUser}}
    <li id="{{_id}}"> 
        <span class="name">{{mUsername}}</span>
        <p><span class="description">{{mDescription}}</span></p>  
    </li>  
    {{/each}}
</ul>
</template>
Run Code Online (Sandbox Code Playgroud)

有了这个帮手:

Template.users.helpers({
  trackedUser: function() {
    var curs = TrackedUser.find();
    users = curs.fetch();
    return users;
  }
});
Run Code Online (Sandbox Code Playgroud)

问题是,在这种情况下,对于每个新用户,所有用户都在dom中进行重新输入.

是否有更好的方法来编写此代码,以便每个新用户只有

<li id="{{_id}}"> 
            <span class="name">{{mUsername}}</span>
            <p><span class="description">{{mDescription}}</span></p>  
        </li>  
Run Code Online (Sandbox Code Playgroud)

被重新绘制?

谢谢

Aks*_*hat 5

避免使用fetch.当您使用时fetch(),不要将光标传递给把手,因此它不能仅重新渲染已更改的部分.

Template.users.helpers({
  trackedUser: function() {
    var curs = TrackedUser.find();
    return curs;
  }
});
Run Code Online (Sandbox Code Playgroud)

对于模板上任何其他位置(不在循环中)的情况,您还可以使用Reactivity Isolation,它将您的内容包装在{{#isolate}}..{{/isolate}块中.