ClientJade - 无法执行jade.render()

时间:2013-03-10 08:20:37

标签: node.js pug

我遇到了我正在处理的Node.js应用的客户端代码中的问题。
这背后的想法是在套接字收到事件时立即更新浏览器。

这是客户端的脚本块:

script(src='/scripts/jadeTemplate.js')
script(src='/socket.io/socket.io.js')
script(type='text/javascript')
  var socket = io.connect();
  socket.on('obj', function(obj) {
    var newsItem = document.createElement("item");
    jade.render(newsItem, 'objTemplate', { object: obj });
    $('#newsfeed').prepend(newsItem);
    alert(obj);
  });

alert()放在jade.render()之前时,它会发出警报,但如果在之后插入,则不会执行(因此,我认为jade.render()p #{object} // That's it. 的问题1}})。

这是objTemplate.jade,在第7行引用:

var server = dgram.createSocket('udp4');
server.bind(41234);
server.on('message', function(buf, rinfo) {
    isOnline = true;
    var message = buf.toString();
    io.sockets.emit('obj', message);
});

这是来自app.js的相关摘录:

/public/scripts/jadeTemplate.js

更新:

Here's a link到{{1}},IMO对于一个问题来说太长了。

如果我需要提供更多片段或文件,请告诉我。 :)

1 个答案:

答案 0 :(得分:1)

您的模板不需要属性object,它需要 obj 。试试这个:

socket.on('obj', function(obj) {
    var newsItem = document.createElement("item");
    jade.render(newsItem, 'objTemplate', { obj: obj }); // changed object to obj
    $('#newsfeed').prepend(newsItem);
    alert(obj);
});

http://jsfiddle.net/trevordixon/VeYBY/显示它有效。如果您将属性更改回object,则会在控制台中收到javascript错误。