Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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
Javascript 我想使用Meteor.setInterval()更新时间模板,但它不起作用_Javascript_Meteor - Fatal编程技术网

Javascript 我想使用Meteor.setInterval()更新时间模板,但它不起作用

Javascript 我想使用Meteor.setInterval()更新时间模板,但它不起作用,javascript,meteor,Javascript,Meteor,我想用Meteor.setInterval-command更新我的时间函数 这就是我的*.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-command更新我的时间函数

这就是我的*.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中的时间。

代码应该是(注意
uhrzeit
之后没有
()
):

您应该传递函数而不是调用函数(添加
()
实际上就是调用函数)


Meteor.setInterval(uhrzeit(),1000)
将有效地“每1秒调用一次”

您的功能不是被动的。您需要设置一个依赖项,确保数据函数依赖它,并定期更新它

此外,数据函数不是调用
setInterval
的好地方。它可以被多次调用并创建许多不需要的间隔
created
是一个更好的地方

此外,请确保清除您创建的所有间隔<代码>销毁是这样做的好地方

代码:

JS:

if (Meteor.isClient) {

    const VAR_TIME = 'now';

    Session.setDefault(VAR_TIME, new Date());

    Template.time.helpers({  // <---- HIGH IMPORTANCE
        now: function() {
            return Session.get(VAR_TIME);
        }
    });

    Meteor.setInterval(function tickUpdate() {

        var date = new Date();
        Session.set(VAR_TIME, date);
        console.log(Session.get(VAR_TIME));
    }, 1000);
}
<body>    
  {{> time}}
</body>
<template name="time">
  <p>The time now is: {{now}}</p>
</template>
if(Meteor.isClient){
const VAR_TIME='now';
setDefault(变量时间,新日期());
Template.time.helpers({//time}}
现在的时间是:{now}


Meteor.setInterval(uhrzeit,1000);
您想传递函数,而不是它的返回值。您解决了我的错误消息。虽然我的模板没有使用此代码更新。有什么想法吗?
uhrzeit()
的效果只是返回
std+“:”+min
不存在。它的结果没有分配给任何东西。你可能想从
uhrzeit
实际更新某些东西。我想通过再次调用该函数,它会再次提取新日期。它将提取日期并从中获取小时和分钟,但不会分配结果值
std+:”+min
到任何东西。例如,每隔一秒,此函数将获取时间并将其返回到void。这是我的html,其中返回到
{{zeit}}
,据我所知,它不会返回到void。
if (Meteor.isClient) {

    const VAR_TIME = 'now';

    Session.setDefault(VAR_TIME, new Date());

    Template.time.helpers({  // <---- HIGH IMPORTANCE
        now: function() {
            return Session.get(VAR_TIME);
        }
    });

    Meteor.setInterval(function tickUpdate() {

        var date = new Date();
        Session.set(VAR_TIME, date);
        console.log(Session.get(VAR_TIME));
    }, 1000);
}
<body>    
  {{> time}}
</body>
<template name="time">
  <p>The time now is: {{now}}</p>
</template>