3

我用树枝。它使用这些标签:{{ name }}

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

1 回答 1

8

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}}, not {{ for items}}。(那是你上面的错误......)。应该是<%for items%>。等等

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

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

于 2015-04-07T17:16:28.457 回答