我想用Meteor.setInterval命令更新我的时间函数。
这就是我的* .js文件的样子:
function uhrzeit() {
var zeit = new Date();
var std = zeit.getHours();
var min = zeit.getMinutes();
return std + ":" + min;
};
if (Meteor.isClient) {
Template.uhr.zeit = function() {
Meteor.setInterval(uhrzeit, 1000); //Edit: Changed it to pass, not call the function.
return uhrzeit();
};
}
模板未更新。它会显示我更新页面后的实际时间,但不会定期更新。或者至少我没有改变HTML中的时间。
答案 0 :(得分:10)
你的功能不是被动的。您需要设置依赖关系,确保您的数据功能依赖于它并定期更新它。
此外,数据功能不是调用setInterval
的好地方。它可以多次调用并创建许多间隔,这是不希望的。 created
是处理此类事情的更好地方。
此外,请务必清除您创建的所有间隔。 destroyed
是一个很好的地方。
代码:
if (Meteor.isClient) {
var zeitDep = new Deps.Dependency(); // !!!
var zeitValue;
var zeitInterval;
function uhrzeit() {
var zeit = new Date();
var std = zeit.getHours();
var min = zeit.getMinutes();
zeitValue = std + ":" + min;
zeitDep.changed(); // !!!
};
Template.uhr.created = function() {
uhrzeit(); /* Call it once so that we'll have an initial value */
zeitInterval = Meteor.setInterval(uhrzeit, 1000);
};
Template.uhr.zeit = function() {
zeitDep.depend(); // !!!
return zeitValue;
};
Template.uhr.destroyed = function() {
Meteor.clearInterval(zeitInterval);
};
}
答案 1 :(得分:0)
代码应该是{在()
之后注意uhrzeit
}:
if (Meteor.isClient) {
Template.uhr.zeit = function() {
Meteor.setInterval(uhrzeit, 1000);
return uhrzeit();
};
}
你应该传递函数而不是调用函数(添加()
有效地调用函数)。
此Meteor.setInterval(uhrzeit(), 1000);
实际上是“每1秒拨打<whatever is returned by uhrzeit>
”。
答案 2 :(得分:0)
<强> JS:强>
<body>
{{> time}}
</body>
<template name="time">
<p>The time now is: {{now}}</p>
</template>
<强> HTML:强>
class Base(object):
def __init__(self):
print("My type is", type(self))
class Derived(Base):
def __init__(self):
super().__init__()
print("My type is", type(self))
d = Derived()