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, поэтому неясно, какие могут быть другие побеги, но возможно, что это не будет проблемой.