[英]Meteor Helpers - DOM Manipulation
// Works
var counter = 0;
var myInterval = Meteor.setInterval(function(){
counter++;
var time = moment().hour(0).minute(0).second(counter).format('HH:mm:ss');
console.log(time);
}, 1000);
// Inside Helper - Does Not Work
Template.clockRunner.helpers({
start: function () {
var counter = 0;
var time = moment().hour(0).minute(0).second(counter).format('HH:mm:ss');
var myInterval = Meteor.setInterval(function(){
counter++
}, 1000);
return time;
},
})
第一个版本控制台以1秒为增量记录时间。 Helper版本在DOM中显示“ 00:00:00”,但不会递增,如果我在helper中控制台记录时间,则它每秒记录“ 00:00:00”。
我不确定我是否误解了助手的反应性,还是看不到小错误。 提前致谢!
助手旨在向Blaze模板提供数据; 除非从模板调用,否则不会调用它。
也就是说,您应该将助手视为仅提供数据的东西,而不应该“做任何事情”。 随着模板的呈现以及响应数据的处理,助手可能会以意想不到的方式被调用多次。
我认为您希望在onRendered()方法中启动计时器; 当模板放到屏幕上时即被调用。 (当模板从屏幕上移开时,有一个相应的方法被调用,因此可以停止计时器)。
计时器启动后,您可以将计时器数据写入反应型变量,然后将辅助程序返回该计时器数据的格式化版本。 因为它在反应式var中,所以可以确保每次计时器计时时都会重新调用您的助手。
最后一部分只是确保Blaze模板引用帮助程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.