1

作業中の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())。

これはobjTemplate.jadeで、7行目で参照されています。

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は質問のスニペットとしては長すぎます。

さらにスニペットまたはファイルを提供する必要がある場合は、お知らせください。:)

4

1 に答える 1

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 エラーが表示されます。

于 2013-03-11T05:10:54.990 に答える