EJS не отображает код ejs на стороне клиента

Я попытался отобразить код EJS, который я отправил home.js в home.ejs как строка, но это не сработало. Я пытаюсь это сейчас, но, похоже, ничего не работает. Мой код:

home.js

var templates = {};
templates.onScroll = fs.readFileSync('views/partials/onScrollAppendPost.ejs', 'utf-8');
res.render("users/home", {templates: templates});`

home.ejs

 var template = new EJS({text: <%- JSON.stringify(templates.onScroll) %>}).update('#mainContainer', {postArr: postArr});

Редактировать:

Что я пытаюсь сделать, так это то, что я хочу определить, когда пользователь попадает в конец страницы. С этим кодом:

$(window).scroll(function () {
        if ($(window).scrollTop() == $(document).height() - $(window).height()) {
//get post data and append post
}});

Когда пользователь попадает в конец страницы, я хочу добавить код ejs на страницу. В основном я хочу общаться между EJS и JS.

1 ответ

Основываясь на примере на http://ejs.co/, вам сначала нужно включить сборку ejs в браузере на своей странице:

<script src="ejs.js"></script>

Тогда вы можете использовать EJS на стороне клиента следующим образом:

var html = ejs.render('your template here', {postArr: postArr});

$('#mainContainer').html(html);

Вот я предполагаю postArr устанавливается соответствующим образом, возможно, в результате запроса AJAX.

Поскольку вы используете EJS для генерации EJS, все становится намного сложнее для понимания, но соответствующий код в вашем home.ejs будет что-то вроде этого:

var html = ejs.render(<%- JSON.stringify(templates.onScroll) %>, {postArr: postArr});

$('#mainContainer').html(html);

Это предполагает, что onScroll шаблон не include любые другие шаблоны. Вы не указали, home.ejs используется для генерации HTML или JavaScript, поэтому неясно, какие могут быть другие побеги, но возможно, что это не будет проблемой.

Другие вопросы по тегам