我尝试将我从home.js
发送到home.ejs
的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之间进行通信。
答案 0 :(得分:0)
根据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,因此不清楚其他可能适用的其他转义注意事项,但这可能不会成为问题。