如何更改 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。
我用的是 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。