javascript - 使用JQuery将ejs模板注入(inject)html

标签 javascript jquery html node.js ejs

可以通过 JQuery 注入(inject)来自 ejs 模板的 HTML 吗?

我有一个 Index 文件,其中包含导航栏和内容区域,以及我尝试呈现的示例 TestButton 模板。

Index.ejs

<ul>
    .
    .
    <li id="listItem"><a href="#test_page">Nav Bar Item</a></li>
</ul>

<div id="display">
</div>

<script>
    $('#listItem').click( function(){
         // Note - testButtonTemplate is being properly passed in from my routes
         $('#display').html( <%- render( testButtonTemplate, {} ) %> );
    });
</script>

TestButton.ejs:

<a href="#" class="btn btn-primary" id="test-button">
    Click Me!
</a>

我尽力简化我的代码,但基本上,当我单击导航栏中的链接时,我想在 display div 中动态加载页面。

<小时/>

导航栏有效。
点击功能有效。
如果我手动在 div 中显示 ejs 模板,它就可以工作。
例如:

<div id="display">
    <%- render( testButtonTemplate, {} ) %>
</div>
<小时/>

否则,当我尝试使用上面的示例代码加载页面时,这是我收到的错误:
未捕获的语法错误:意外的标记<”,原始 html 如下所示:

.
.
<script>
$('#listItem').click( function(){
    $('#my-test').html( <a href="#" class="btn btn-primary" id="test-button">
        Click Me!
    </a>
    );
});
</script>

因此您可以看到 html 已从 ejs 模板类中正确检索,但 JQuery 不喜欢我格式化该数据的方式。看起来数据需要用引号括起来,但简单地添加开始和结束引号并不能解决问题。

我似乎尝试了引号、转义和未转义html的所有组合,首先将数据存储在变量中,然后尝试注入(inject)它,但没有一个对我有用。

我犯了一个明显的错误吗?考虑到我当前的工具集,我更愿意解决这个问题。

最佳答案

尝试像这样加载模板:

<script>
var template = new EJS({url: '/TestButton.ejs'});
$('#listItem').click( function(){
     $('#display').html(template.render());
});
</script>

关于javascript - 使用JQuery将ejs模板注入(inject)html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36707302/

相关文章:

javascript - 将纬度和经度指定为全局使用的变量

javascript - 无论我如何尝试都无法访问 JSON 对象

javascript - jQuery 弹性缓动方程

javascript - 如何使用 jQuery 在输入中用逗号替换换行符?

javascript - 根据分辨率更改背景图像 - 仅限 javascript

css - 移动显示 :Block link text to the bottom of a div

javascript - 为什么调用 useState 钩子(Hook)的 set 函数会立即应用于异步函数?

javascript - 单击 Google map 标记的 ajax 请求后加载 map

php - jQuery + php 文件上传。传递多个参数

javascript - 如何使图像在表格元素内居中