0

有没有办法替换 jquery-tmpl 上的主标签?

例子:

var data = {名称:'Pele',语言:[“葡萄牙语”,“英语”,“西班牙语”]};

所以在一个脚本标签上,我们定义了以下模板

姓名:${Name} {{each Languages}} 我说 $value {{/each}}

我想改变的是......我不使用 {{each}} 我会使用类似 $$each$$ 而不是 ${Name} 我会使用类似 $#Name$

你可能会问自己我为什么要这样做。

主要原因是当我因为在我们正在处理的项目中使用 Django 并且当我们放置像 {{each}} 这样的代码时(即使在类型设置为 text/html 的脚本标签上)Django 视图引擎认为它是一个服务器标签并且尝试将其渲染为服务器端标签。

更新: 我正在寻找的是一种在 jQuery-tmpl 上设置分隔符的方法,就像在 Mustache.js http://mustache.github.com/mustache.5.html上可用的那样(查找Set Delimiter

谢谢。

4

3 回答 3

1

当然,如果您想{在 HTML 中使用文字,请使用templatetagwith openblock

{% templatetag openblock %}

如果您想要文字},请使用closeblock

{% templatetag closeblock %}

因此,如果您想{{each}}在 HTML 中使用:

{% templatetag openblock %}{% templatetag openblock %}each{% templatetag closeblock %}{% templatetag closeblock %}
于 2010-12-09T12:01:50.047 回答
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 并更改这些硬编码的正则表达式以满足您的需求。

于 2010-12-09T12:12:49.963 回答
0

这个问题已经在这里问过jquery template tags 与 Django template 冲突!但我想我会根据我的经验补充。

简而言之,我已将此自定义“原始”模板标签添加到我的 jquery-tmpl/django 项目中:http: //www.holovaty.com/writing/django-two-phased-rendering/

于 2010-12-09T16:34:25.207 回答