setInterval不刷新Jade模板中的数据

时间:2014-04-29 21:51:13

标签: javascript node.js express pug

我有一个使用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>

1 个答案:

答案 0 :(得分:0)

我认为你错过了函数包装器,如下所示:

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

否则立即调用load(),其返回值实际用于setInterval的函数参数。

相关问题