ClientJade – 麻烦执行jade.render()
我遇到了一个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()
)的一个问题。
这是第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错误。