如何在Jade中循环JavaScript对象?

时间:2015-01-19 19:00:02

标签: javascript jquery json node.js pug

Node.js - Jade - socket.io - jQuery - JSON

在我的“index.jade”中,我有以下代码,其中“results”数据来自后端作为JSON:

extends layout

block content
 ul
 // more jade html here

 script.
  socket.on('results', function(results) {
   results.forEach(function(item){
   name = item.name;
   $('ul').append('<li>'+name+'</li>');
  });
 });

这样可行但是,因为我将有更多的内容和标签稍后推入“ul”内部,我不希望在“append()”中有一大块连接的html。

我非常喜欢Jade格式:

ul
 each val, index in results
 li= results[index].name

虽然我不能在我的“块内容”中写下最后一段代码,因为“socket.on('results')”尚未被触发并引发错误。

有没有一种优雅的方式来写这个?

1 个答案:

答案 0 :(得分:0)

您也可以在客户端上使用jade。看看jadeifyhttps://github.com/domenic/jadeify

有了这个,你可以拥有row.jade,并在每个套接字消息上附加一行:

var template = require('views/row.jade');
var $ul = $('ul');
socket.on('row',  function(item) {
    $uk.append(template(item));
});

然后只需调整套接字一次发出一行。