我是流星新手,我尝试使用 tmeasday:publish-counts 包发布一些计数。当我刚刚读取计数时,反应性开箱即用,但是当我在 Template.helper 函数中使用计数时,当计数发生变化时,该函数不会更新。
这是我所拥有的:
在服务器上:
Meteor.publish('counters', function() { Counts.publish(this, 'searches-thisWeek', UserActions.find({ $and: [ { action: SEARCHES_REGEX }, { date : { $gte : moment().startOf('week').toDate()} }, { date : { $lt : moment().toDate()} } ] })); Counts.publish(this, 'searches-lastWeek', UserActions.find({ $and: [ { action: SEARCHES_REGEX }, { date : { $gte : moment().subtract(1, 'week').startOf('week').toDate()} }, { date : { $lt : moment().subtract(1, 'week').endOf('week').toDate()} } ] })); });
在客户端:
Template.dashboard.helpers({ nbSearchesThisWeek : function() { var variation = Counts.get('searches-thisWeek') - Counts.get('searches-lastWeek'); return { currentValue : Counts.get('searches-thisWeek'), orientation : { sign: (variation > 0) ? '+' : '', class: (variation > 0) ? 'up' : 'down' }, variation : variation }; } });
在我的模板中,我有一个:
<td>{{getPublishedCount 'searches'}}</td> <td>{{#with nbSearchesThisWeek}}{{>variations }}{{/with}}</td>
它使用这个子模板:
<template name="variations"> <div class="variation col-lg-12"> <span class="variationValue {{orientation.class}} col-lg-6">{{orientation.sign}}{{variation}}</span> <span class="currentValue col-lg-6">{{currentValue}}</span> </div> </template>
{{getPublishedCount 'searches'}} 更新正常。它只是获取我的“搜索”计数器并在计数器更改时更新。
但是,子模板中的计数器在启动时执行良好,但在任何依赖计数器发生更改时从不更新。
所以我的问题是,我如何以及在哪里让我的 nbSearchesThisWeek 助手对依赖计数器值的更改做出反应?当我阅读有关 Deps、Tracking 和 ReactiveVars 的文档时,我感到非常困惑……我真的不明白应该在哪里使用这些东西来使我的用例工作……
谢谢你的帮助。
菲利普