Предполагается, что вы используете Jade в качестве библиотеки шаблонов на стороне клиента (что встречается редко, но возможно):
Для того, чтобы обновить Ajax исключительно через Jade, вам нужно будет повторно обработать шаблон. Вы, должно быть, делаете что-то вроде (используя пример из документа здесь)
fn = jade.compile template, options
fn locals
Что вы должны сделать, так это сделать jadeItems
свойством этого locals
объекта. Так что вместо строки
- var jadeItems = [{key:'Test',value:'3.1415'}, {key:'Test2',value:'2.1878'}]
в вашем шаблоне, вы бы вместо этого вызвали функцию рендеринга Jade с
locals = {jadeItems: [{key:'Test',value:'3.1415'}, {key:'Test2',value:'2.1878'}]}
fn locals
Тогда в вашей функции Ajax вы написали бы
locals.jadeItems = JSON.parse message
fn locals
для повторной визуализации вашего шаблона с новыми данными.
Обновление: Учитывая разъяснение в комментариях к вопросу, более прямой ответ: «Просто используйте jQuery для манипулирования DOM из обратного вызова Ajax». Это может выглядеть примерно так:
SS.events.on 'message', (message) ->
items = JSON.parse message
html = ''
for item in items
html += "<tr><td>#{item.key}</td><td>#{item.value}</td></tr>"
$('tbody').html html
(обратите внимание, что вышеизложенное предполагает, что ответ сервера очищен и хорошо отформатирован).