使列表项目脱离对象

时间:2016-09-15 19:42:01

标签: node.js pug

我正在使用Socket.io创建一个项目Node.JS项目。我试图从一个对象制作HTML列表项。我试图将玩家列表预先渲染到我正在渲染的这个哈巴狗文件中。虽然,我可以获取播放器列表并在html中显示它,但所有用户名都聚集在一起作为一个列表项。

我尝试过的事情

app.js

var players = {}

socket.on('connection', function(socket) {
    players[socket.id] = {}
    var playerList = ''
    for (var i in players) {
        playerList += i + "<br>"
    }

    var roomData = pug.renderFile('./views/room.pug', {
        playerList: playerList
    })
})

players[socket.id] = {}是一个对象而不是数组的原因是因为在对象中还有其他内容,它只是不包含在这里。

room.pug

.row
    .col.s12
        #test
            ul
              li
                |#{playerList}

如前所述,上述方法将所有玩家放在一个HTML列表项中。如何将每个玩家分成他们自己的列表项?感谢。

2 个答案:

答案 0 :(得分:2)

我建议:

socket.on('connection', function(socket) {
    players[socket.id] = {}
    var roomData = pug.renderFile('./views/room.pug', {
        playerList: Object.keys(players)
    })
    // etc ...
})

和帕格:

.row
    .col.s12
        #test
            ul
                each playerName in playerList
                    li= playerName

答案 1 :(得分:0)

您可以在新列表中添加对象的所有字段,如下所示:

 var list;
 for (var key in object) {
        list.push(objet[key]);
 }