如何更改 JsRender 模板标签?

How to change JsRender template tags?

我用的是 Twig。它使用这些标签:{{ name }}

我想在我的项目中包含 JsRender。但是JsRender也使用了相同的标签{{:name}},所以产生了冲突,没有任何效果。如何使用自定义标签更改默认 JsRender 标签,例如 Ruby-like <%= name %>

更新:

出于某种原因,我无法使其与控制流标签一起使用,for 与自定义标签的行为不尽如人意。为什么会这样?

这是一个模板:

<script id="myTmpl" type="text/x-jsrender">
    <%!-- This is a copmment %>
    <% for data %>
        <%:key%>
    <% /for %>
</script>

这里是js代码:

var template = $.templates("#myTmpl");
var htmlOutput = template.render(data);
$(".div").html(htmlOutput);

这是渲染结果:

<%!-- This is a copmment %> <% for data %> <% /for %>

JsRender 让您更改分隔符,如下所示:

$.views.settings.delimiters("<%", "%>");

那么你会写 <%: name %>.

如果你使用JsViews,你也可以在{^{中设置绑定字符^——写成:

$.views.settings.delimiters("<%", "%>", "*");

然后使用 <*%: name %>.

示例(作为下面的片段运行):

<%!-- a comment --%>

<%:title%>
<%for items%>
    <div><%:name %></div>
<%/for%>

$.views.settings.delimiters("<%", "%>");

var data = {
  title:"The Title",
  items: [
 {name:"Item one"},
  {name:"Item two"}
 ]
};

var template = $.templates("#myTmpl");

var htmlOutput = template.render(data);

$("#result").html(htmlOutput);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//www.jsviews.com/download/jsrender.js"></script>

<script id="myTmpl" type="text/x-jsrender">
<%!-- a comment --%>
<%:title%>
<%for items%>
 <div><%:name %></div>
<%/for%>
</script>

<div id="result"></div>

请注意,您必须简单地将原来的 "{{""}}" 字符替换为所选的替换字符,但不要更改空格。替换后,<% for items%> 将不正确,因为正确的语法是 {{for items}},而不是 {{ for items}}。 (那是你上面的错误......)。应该是<%for items%>。等等

有关文档,请参阅 Setting tag delimiters for JsRender

有关标记语法,请参阅 http://www.jsviews.com/#jsrtags