7
Tweets = new Meteor.Collection('tweets');
if (Meteor.isClient) {
Meteor.subscribe('tweets');
Template.Panel.helpers({
items: function() {
var days_tweets = Tweets.find();
console.log(days_tweets.count());
return days_tweets;
});
}
if (Meteor.isServer) {
Meteor.publish('tweets', function() {
return Tweets.find({}, {limit: 1000});
});
<body>
<h1>This is a list of tweets</h1>
{{> Panel}}
</body>
<template name="Panel">
<h2>A list of tweets sorted by size</h2>
{{#each items}}
<p>item</p>
{{/each}}
</template>
而且在页面加载时的控制台输出:
Tweet count: 0
Tweet count: 129
Tweet count: 272
Tweet count: 366
Tweet count: 457
Tweet count: 547
Tweet count: 672
Tweet count: 814
Tweet count: 941
Tweet count: 1000
所以辅助功能触发页面上10倍负载(次数变化)。任何人都可以解释这里发生了什么?我找不到任何对此的引用,接受在模板上从多个{{}}调用助手的情况。还有什么方法来阻止它?最终,我需要在呈现之前一次处理推文。
好,谢谢。我假设了这样的事情。有没有办法阻止它这样做? (假设服务器上的集合没有改变,这里就是这种情况)。在固定服务器和客户端集合之间进行同步异步运行似乎很奇怪。 – kendlete
@kendlete更新了我的答案,举例说明了如何处理流星订阅系统的行为 –
Meteor.subscribe()在文档中也有一个onready回调函数,可以用来延迟插入更多的代码,直到订阅为止准备。这与.ready()不同,如果订阅已准备就会返回布尔值。可能比Marco的方法更麻烦一点。 – Paul