javascript – 如何使用meteor定期更新变量

前端之家收集整理的这篇文章主要介绍了javascript – 如何使用meteor定期更新变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个会话变量,我想用固定的周期更新.说,我希望这个变量每60秒增加1.

在我看来,这样做的最佳位置是相关模板的帮助部分.我首先尝试使用setInterval执行此操作,如here所述,但这不起作用(该功能似乎没有重复).

然后我尝试了我认为简单的解决方案,但这也行不通.见下文.辅助变量’currentPosition’应该返回当天的当前分钟(加上偏移量).但是,它仅在首次调用模板时以及在“事件”部分中定义的函数中更改会话变量“offset”时执行此操作,该函数响应特定div上的单击(“下一个”按钮) .

currentPosition: function () {
        var d = new Date();
        var h = d.getHours();
        var m = d.getMinutes();
        var w = h * 60 + m;

        Session.set("position",w + Session.get("offset"));

        return Session.get("position");
    },

我认为上面的帮助器会每分钟主动更新’currentPosition’的值.但事实并非如此.

所以,我的问题是,如何调整会话变量每个,比如说60秒,增加1比1,而变量调整时,会话变量的新值会反映在app中.

(如果有一个简单而完全不同的解决方案适用于流星,我不知道它,所以如果我遗漏了一些明显的东西,请指出它.)

解决方法

虽然您使用的是反应变量,但它只会被设置一次 – 首次调用帮助程序时.因此它不再运行.您需要帮助程序之外的函数来为您设置变量.记住一条重要规则 – 助手永远不应该拥有 side effects.

以下是如何创建计时器的完整工作示例:

HTML

<body>
  {{> timer}}
</body>

<template name="timer">
  <p>Total Seconds: {{seconds}}</p>
</template>

JS

Template.timer.helpers({
  seconds: function() {
    return Template.instance().seconds.get();
  }
});

Template.timer.created = function() {
  var self = this;
  this.seconds = new ReactiveVar(0);

  this.handle = Meteor.setInterval((function() {
    self.seconds.set(self.seconds.get() + 1);
  }),1000);
};

Template.timer.destroyed = function() {
  Meteor.clearInterval(this.handle);
};
原文链接:https://www.f2er.com/js/156071.html

猜你在找的JavaScript相关文章