如何更改JsRender模板标签?

Gre*_*een 3 jsrender jsviews

我用Twig.它使用这些标签:{{ name }}

我想在我的项目中包含JsRender.但是JsRender也使用相同的标签{{:name}},因此存在冲突并且没有任何作用.如何使用自定义标记更改默认的JsRender标记,比如类似Ruby<%= name %>

UPD:

出于某种原因,我无法使用控制流标记,for使用自定义标记的行为不符合预期.为什么会这样?

这是一个模板:

<script id="myTmpl" type="text/x-jsrender">
    <%!-- This is a copmment %>
    <% for data %>
        <%:key%>
    <% /for %>
</script>
Run Code Online (Sandbox Code Playgroud)

这是js代码:

var template = $.templates("#myTmpl");
var htmlOutput = template.render(data);
$(".div").html(htmlOutput);
Run Code Online (Sandbox Code Playgroud)

这是一个渲染结果:

<%!-- This is a copmment %> <% for data %> <% /for %>
Run Code Online (Sandbox Code Playgroud)

Bor*_*ore 7

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

$.views.settings.delimiters("<%", "%>");
Run Code Online (Sandbox Code Playgroud)

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

如果你使用JsViews,您还可以设置约束性^{^{-通过书面形式:

$.views.settings.delimiters("<%", "%>", "*");
Run Code Online (Sandbox Code Playgroud)

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

示例(在下面作为代码段运行):

<%!-- a comment --%>

<%:title%>
<%for items%>
    <div><%:name %></div>
<%/for%>
Run Code Online (Sandbox Code Playgroud)

$.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);
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

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

有关文档,请参阅为JsRender设置标记分隔符.

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