我有一个想用 Meteor 构建的 Newsfeed 想法,但是我在弄清楚如何使 News Feed 本身保持不变时遇到了一些困难,这不是反应性的,而是更新子项目(评论,喜欢等)一旦更新。
我将所有内容都存储在一个集合中,如果可能的话,我想保持这种状态。所以集合是这样设置的:
[
{
title: 'A random title',
date_created: '01/01/2001',
comments:
[
{'message': 'Lorem ipsum', date_created: '01/01/2001'},
[...]
]
},
[...]
]
所以我想做的是让新闻源不反应,这样当插入或更新新的新闻项目时,保存新闻列表的模板不会被重新呈现。但是,如果添加、删除评论或有人喜欢新闻提要,我希望立即在模板中更新。
我一直试图弄清楚如何使用{{#isolate}}
,{{#constant}}
但没有占上风。
这是我的客户端JS:
Template.group_feed.feed_data = function() {
var feed = Newsfeed.find({}, {
sort: {updated_time: -1},
limit: 10,
reactive: false
}).fetch();
return feed;
};
我设置reactive: false
它不更新模板,但是在更新评论或喜欢时也使它成为静态。所以我猜有更好的方法来做到这一点,然后让整个集合不反应。
这是我的模板代码:
<template name="group_feed">
<div id="feed-wrapper">
<ul>
{{#each feed_data}}
{{> group_feed_item}}
{{/each}}
</ul>
</div>
</template>
<template name="group_feed_item">
<li>
<h1>{{title}}</h1>
<div class="comments">
{{#each comments}}
<p>{{message}}</p>
{{/each}}
</div>
</li>
</template>
任何人都有实现这一目标的好方法?