ClientJade – 麻烦执行jade.render()

我遇到了一个N​​ode.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() )的一个问题。

这是第7行提到的objTemplate.jade:

 p #{object} // That's it. 

这是从app.js相关的片段:

 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); }); 

更新:

这是一个到/public/scripts/jadeTemplate.js 的链接 ,IMO对于一个问题来说太长了。

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

你的模板不需要一个属性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错误。