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

时间:2013-07-07 08:24:08

标签: 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>

有了这个助手:

Template.users.helpers({
  trackedUser: function() {
    var curs = TrackedUser.find();
    users = curs.fetch();
    return users;
  }
});

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

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

<li id="{{_id}}"> 
            <span class="name">{{mUsername}}</span>
            <p><span class="description">{{mDescription}}</span></p>  
        </li>  

是否已重新绘制?

谢谢

1 个答案:

答案 0 :(得分:5)

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

Template.users.helpers({
  trackedUser: function() {
    var curs = TrackedUser.find();
    return curs;
  }
});

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