我使用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>
以下是js
代码:
var template = $.templates("#myTmpl");
var htmlOutput = template.render(data);
$(".div").html(htmlOutput);
这是一个渲染结果:
<%!-- This is a copmment %> <% for data %> <% /for %>
答案 0 :(得分:7)
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);
&#13;
<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>
&#13;
请注意,您必须简单地用所选的替换字符替换原始"{{"
和"}}"
字符,但不能更改空格。替换后,<% for items%>
将不正确,因为正确的语法是{{for items}}
,而不是{{ for items}}
。 (那是你上面的错误......)。它应该是<%for items%>
。等
有关文档,请参阅Setting tag delimiters for JsRender。
有关标记语法,请参阅http://www.jsviews.com/#jsrtags。