Templates JSRender:从转换器或自定义标记呈现另一个模板
我从后端服务请求中获取HTML内容,该请求可能包括以下内容(非JSRender):Templates JSRender:从转换器或自定义标记呈现另一个模板,templates,jsrender,Templates,Jsrender,我从后端服务请求中获取HTML内容,该请求可能包括以下内容(非JSRender): <div>{{comp:someComponentId}}</div> {{comp:someComponentId} 或者我们可以通过以下方式接收: <div>{{comp someComponentId}}</div> {{comp someComponentId} 我想利用此语法在JSRender中使用转换器或标记来有效地将其转换为: <div&
<div>{{comp:someComponentId}}</div>
{{comp:someComponentId}
或者我们可以通过以下方式接收:
<div>{{comp someComponentId}}</div>
{{comp someComponentId}
我想利用此语法在JSRender中使用转换器或标记来有效地将其转换为:
<div>{{include tmpl="someComponentId"/}}</div>
{{include tmpl=“someComponentId”/}
标记/转换器是否执行呈现,或者是否可以迭代创建include以让JSRender对其进行评估。我如何做到这一点?这是否符合您的要求
<script id="myTmpl" type="text/x-jsrender">
{{comp someid/}}
</script>
<script id="id1" type="text/x-jsrender">
what {{:foo}}
</script>
<div id="page"></div>
<script>
$.views.tags("comp", {
render: function(id) {
return $("#"+id).render(this.tagCtx.view.data);
}
});
var myTmpl = $.templates("#myTmpl"),
data = { someid: "id1", foo: "FOO" },
html = myTmpl(data);
$("#page").html(html);
</script>
{{comp someid/}}
什么{{:foo}
$.views.tags(“comp”{
渲染:函数(id){
返回$(“#”+id).render(this.tagCtx.view.data);
}
});
var myTmpl=$.templates(“#myTmpl”),
数据={someid:“id1”,foo:“foo”},
html=myTmpl(数据);
$(“#page”).html(html);
谢谢!我试试看。我正在服务器端执行此操作,因此希望以下操作能够正常工作:返回jsrender.render[id].render(this.tagCtx.view.data);我面临两个问题。我得到的内容可以是{{comp:someid}}或{{comp-someid}}。第一个问题是,作为一个标记,它会中断,因为它没有/结束斜杠。第二个问题是,someid是id,它会断开,因为它周围没有引号。如果你不能让它在模板中呈现出有效的语法,那么它显然会失败。您可以执行var templateString=$(“#myTmpl”).text()
,然后对字符串进行调整,使其具有结束斜杠(templateString2
),然后执行myTmpl=$.templates(templateString2)
。通过如上所述声明tag.render()方法,someid将作为函数(id)传入,您无需添加引号。为什么会破裂?它在上面工作。。。。在这种方法中,您不会创建一个模板字符串,{{include tmpl=“someid”…}
。上面的操作在语义上应该等同于这样做……我可以更改服务请求,以获得{{comp:'someComponentId'}格式的片段,这样它就可以工作了。如果没有引号,someComponentId将被视为属性名,而不是字符串,这就是它中断的原因。我不能做$(“#myTmpl”).text(),因为它在服务器上。另外,出于性能原因,我们不能在服务器上进行大量的字符串操作。但是谢谢你的帮助!我现在有了一些有效的方法。你最初的问题太简洁了(至少对我来说)我还以为您想从属性名someComponentId获取id-这就是为什么我上面的示例代码有{{comp someid/}}
和数据={someid:“id1”,…}
。我现在明白了您所说的“someid就是id”的意思-但我们之前在讨论中有不同的目的。。。