【问题标题】:setInterval not refreshing data in Jade templatesetInterval 不刷新 Jade 模板中的数据
【发布时间】:2014-04-30 06:05:42
【问题描述】:

我有一个使用 Express 和 Jade 的 Node 应用程序。我正在从 API 中提取 json 数据,并且我希望该数据在页面上定期刷新。所以,我的想法是有一个空的 div,然后将不同路由/模板的内容注入该 div 并使用 setInterval 刷新它。它最初加载,但从不刷新。这是我的代码的相关位:

board.jade:

extends layout

block content
  div(class='bodyBlock') 
    h1= title
    div#data

layout.jade:

!!! 5
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
    script(type='text/javascript')(src='//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js')
  body
    block content
  script(type='text/javascript').
    $(document).ready(function(){
    setInterval ($("#data").load("/currentdev"), 5000 );
    });

/currentdev 路由加载 data.jade:

ul
  each card in inprogresscards
    li(style='margin-bottom: 5px')
      b #{card.color} #{card.name} #{card.idShort}

所以,就像我说的,/currentdev 最初被加载到#data 并在我的页面上正确显示。但它永远不会刷新。似乎 setInterval 的行为更像 setTimeout ......我错过了什么?谢谢...

哦,这是生成的 HTML:

<!DOCTYPE html>
<html>
<head>
  <title>Current Development Board</title>
  <link rel="stylesheet" href="/stylesheets/style.css">
  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
  <div class="bodyBlock">
    <h1>Current Development Board</h1>
      <div id="data"></div>
  </div>
</body>
<script type="text/javascript">$(document).ready(function(){
setInterval ($("#data").load("/currentdev"), 5000 );
});</script>
</html>

【问题讨论】:

    标签: javascript node.js express pug


    【解决方案1】:

    我认为您缺少函数包装器,如下所示:

    setInterval(function() { $("#data").load("/currentdev"); }, 5000);
    

    否则你的load() 会被立即调用,它的返回值就是 setInterval 的函数参数实际使用的值。

    【讨论】:

    • 哎呀。如此简单,我完全错过了它。就是这样,谢谢!
    猜你喜欢
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2021-04-06
    • 2016-09-28
    • 2010-09-28
    • 2011-03-26
    相关资源
    最近更新 更多