2013-12-06 4 views
0

Я пытаюсь использовать JQuery для добавления частичного EJS. То, что я хочу сделать, - это реализовать бесконечную прокрутку в таблице. Я использую EJS для рендеринга строк таблицы как частичных и внутри каждого частичного, используя больше EJS для отображения переменных, переданных в представление из Express.Добавление частичного EJS с jQuery

table.html

<tbody> 
    <% include row.html %> 
</tbody> 

row.html

<% users.forEach(function(user){ %> 
    <td><%= user.name %></td> 
    ...and so on 
<% }) %> 

JQuery

$('tbody').append('<%- include row.html %>') 

Проблема у меня теперь я не могу получить последние <% include row.html%> для работы в jQuery. Я отлаживал это и изолировал проблему от этой строки кода. Что я могу сделать, чтобы сделать эту работу?

Спасибо!

+0

Он содержит цикл одного из массивов я проходящими в и визуализации содержимого с EJS. Я отредактирую оригинальное сообщение, чтобы продемонстрировать его. – user2829448

+0

Ничто не отображается на странице. Но я только что заметил в консоли 'Uncaught SyntaxError: Unexpected identifier'. – user2829448

+0

Если я удалю строку jQuery, сообщение об ошибке консоли исчезнет. – user2829448

ответ

1

Убедитесь, чтобы избежать вашего HTML, то есть, если он содержит апостроф, он не будет работать.

$('tbody').append('<p>Johny's HTML AIN'T werkin'!</p>'); 

должен быть

$('tbody').append('<p>Johny\'s HTML IS werkin\'!</p>'); 
+1

Да, это была проблема. Я закончил работу над этим, предоставив частичное в Express и передав его в качестве обратного вызова. Тогда я мог бы назвать это HTML в моем вызове ajax. Экспресс 'res.render ('истории/таблицы строки' { ... }, функция (эээ, HTML) { res.send (HTML); });' JQuery '$. Ajax ({ типа: 'GET', URL: nextUrl, DATATYPE: 'HTML', успех:. функция (данные) { $ ('TBODY') присоединять (данные); } }); ' В этом была проблема, поэтому отмечая это как ответ. – user2829448

+0

yah это один из способов сделать это. Я тоже это сделал.Вы также можете захватить любой файл и поместить его содержимое в строку на стороне сервера, а затем избежать его. Узел - это шизнички, не так ли? –

+1

Хмм, проголосовали за то, что именно? Я отвечал на его пример с прямым кодом. Конечно, делать это через шаблоны предпочтительнее, но, пожалуйста, на самом деле прочитайте и поймите вопрос до того, как я отпущу свой ответ. –

5

Из моего понимания express/ejs, если вы хотите добавить дополнительные шаблоны EJS после загрузки страницы (на клиенте), вам нужно будет указать EJS client script на вашей странице, отобразить новый HTML, и добавьте его в jQuery.

Пример:

// Get your data 
var additionalUsers = { users: [ { name: 'Bob' } ] }; 

// Moved and renamed the row.html to: /public/templates/row.ejs 
var html = new EJS({ url: '/templates/row'}).render(additionalUsers); 

// Append the rendered HTML 
$('tbody').append(html); 
Смежные вопросы