嗨,我有以下模板:
<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)
被重新绘制?
谢谢
避免使用fetch.当您使用时fetch(),不要将光标传递给把手,因此它不能仅重新渲染已更改的部分.
Template.users.helpers({
trackedUser: function() {
var curs = TrackedUser.find();
return curs;
}
});
Run Code Online (Sandbox Code Playgroud)
对于模板上任何其他位置(不在循环中)的情况,您还可以使用Reactivity Isolation,它将您的内容包装在{{#isolate}}..{{/isolate}块中.