Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 更新多个模板_Meteor - Fatal编程技术网

Meteor 更新多个模板

Meteor 更新多个模板,meteor,Meteor,在我的模板中,我有以下代码 {{#each cards}} ... <h4>Time left {{timeLeft validUntil}}</h4> <div class="clearfix"></div> .... {{/each}} 模板辅助程序 Template.groupDetails.helpers({ timeLeft: function(validUntil){

在我的模板中,我有以下代码

{{#each cards}}
    ...
            <h4>Time left {{timeLeft validUntil}}</h4>
              <div class="clearfix"></div>
    ....
{{/each}}
模板辅助程序

Template.groupDetails.helpers({
timeLeft: function(validUntil){
    var diff = moment.duration(moment().diff(validUntil));
    return [diff.hours()*-1, diff.minutes()*-1, diff.seconds()*-1].join(':')
}
});
然后,我创建了一个setIntervall,它使用模板上创建的事件

Template.groupDetails.created = function() {
Meteor.setInterval( updateTimers, 5000 );
};
我有函数updateTimers:

function updateTimers() { };
我已经测试了很多东西,比如在数据库中添加一个timeLeft int,但是当我已经创建了一个timeLeft int并且在那里有效时,将它放在数据库中感觉像是浪费

如何通过每5秒调用一次的函数更新所有卡中的timeleft

我尝试过这样的解决方法:


但是这感觉像是一个可怕的黑客

您链接的解决方案不是真正的黑客,而是Meteor的工作方式(尽管在这种情况下您不应该使用
会话
)。您可以指定依赖项,使依赖计算无效,并让Meteor和Blaze负责渲染,而不是显式地重新渲染模板

在您的示例中,您可以创建如下的

var timerDep = new Tracker.Dependency;
助手必须依赖于
timerDep

timeLeft: function() {
  timerDep.depend();
  …
}
最后,每五秒钟使辅助对象的计算无效:

function updateTimers() {
  timerDep.changed();
}
这样,您的助手将在
validUntil
更改或计时器过期时重新运行

function updateTimers() {
  timerDep.changed();
}