Mas*_*aba 6 javascript setinterval meteor
我有一个会话变量,我想用固定的周期更新.说,我希望这个变量每60秒增加1.
在我看来,这样做的最佳位置是相关模板的帮助部分.我第一次尝试描述做到这一点使用的setInterval 这里,但没有工作(功能就似乎不重复).
然后我尝试了我认为简单的解决方案,但这也行不通.见下文.辅助变量'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");
},
Run Code Online (Sandbox Code Playgroud)
我认为上面的帮助器会每分钟主动更新'currentPosition'的值.但事实并非如此.
所以,我的问题是,如何调整会话变量每个,比如说60秒,增加1比1,而变量调整时,会话变量的新值会反映在app中.
(如果有一个简单而完全不同的解决方案适用于流星,我不知道它,所以如果我遗漏了一些明显的东西,请指出它.)
Dav*_*don 14
虽然您使用的是反应变量,但它只会被设置一次 - 首次调用帮助程序时.因此它不再运行.您需要帮助程序之外的函数来为您设置变量.记住一条重要的规则 - 助手永远不应该有副作用.
以下是如何创建计时器的完整工作示例:
<body>
{{> timer}}
</body>
<template name="timer">
<p>Total Seconds: {{seconds}}</p>
</template>
Run Code Online (Sandbox Code Playgroud)
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);
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2337 次 |
最近记录: |