有没有办法替换jquery-tmpl上的主标签?
示例:
var data = {姓名:'Pele',语言:[“葡萄牙语”,“英语”,“西班牙语”]};
因此,在脚本标记上,我们定义了以下模板
名称:$ {Name} {{每种语言}} 我说价值 {{/每}}
我想改变的是...... 不使用{{each}}我会使用像$$每个$$这样的东西 而不是$ {Name}我会使用$#Name $
之类的东西你可能会问自己为什么要这样做。
主要原因是当我在项目中我们正在使用Django并且当我们放置像{{each}}这样的代码时(甚至在类型设置为text / html的脚本标签上)Django视图引擎认为它是一个服务器标记,并尝试呈现它,如果它是服务器端标记。
更新的 我正在寻找的是一种在jQuery-tmpl上设置Delimeter的方法,就像在Mustache.js上可用的那样。 http://mustache.github.com/mustache.5.html(寻找设置分隔符)
感谢。
答案 0 :(得分:1)
当然,如果您想在HTML中使用文字{
,请将templatetag
与openblock
一起使用。
{% templatetag openblock %}
如果您想要文字}
,请使用closeblock
:
{% templatetag closeblock %}
因此,如果您想在HTML中使用{{each}}
,请使用:
{% templatetag openblock %}{% templatetag openblock %}each{% templatetag closeblock %}{% templatetag closeblock %}
答案 1 :(得分:1)
另一种方法是在js文件中定义模板,该模板不会被django作为模板处理。
如果不可能,那么Dominic方法的另一种替代方法是定义'{{'和'}}'的变量,或者相应地使用jqtmpl_open和jqtmpl_close,并在模板中使用它们,如下所示:
{{ jqtmpl_open }}each Languages{{ jqtmpl_close }}
这在模板中更具可读性。
更改jquery-tmpl的分隔符很复杂。通过查看代码,似乎{{在那里的一些正则表达式中是硬编码的。
var oldManip = jQuery.fn.domManip, tmplItmAtt = "_tmplitem", htmlExpr = /^[^<]* (<[\w\W]+>)[^>]*$|\{\{\! /,
newTmplItems = {}, wrappedItems = {}, appendToTmplItems, topTmplItem = { key: 0, data: {} }, itemKey = 0, cloneIndex = 0, stack = [];
唯一的解决方案是为您的项目分叉jquery-tmpl并更改这些硬编码的正则表达式以满足您的需求。
答案 2 :(得分:0)
此问题已经在jquery template tags conflict with Django template!提出,但我想我会从我的经验中加以补充。
简而言之,我已将此自定义“原始”模板标记添加到我的jquery-tmpl / django项目中:http://www.holovaty.com/writing/django-two-phased-rendering/