替换 jquery-templ 标签

发布于 2024-10-06 15:41:40 字数 632 浏览 7 评论 0原文

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

示例:

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

所以在脚本标签上我们定义以下模板

姓名:${姓名} {{每种语言}} 我说的是价值 {{/each}}

我想改变的是...... 我不使用 {{each}} 我会使用类似 $$each$$ 的东西 我会使用 $#Name$ 代替 ${Name}

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

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

更新: 我正在寻找一种在 jQuery-tmpl 上设置 Delimeter 的方法,就像 Mustache.js 上提供的方法一样 http://mustache.github.com/mustache.5.html (查找 < i>设置分隔符)

谢谢。

Is there a way to replace the main tag on jquery-tmpl ?

Example:

var data = {Name: 'Pele', Languages: ["Portuguese","English","Spanish"]};

So on a script tag we define the following template

Name: ${Name}
{{each Languages}}
I speak $value
{{/each}}

What I wanted to change is ...
Istead of using {{each}} I'd use something like $$each$$
Instead of ${Name} I'd use something like $#Name$

You may be asking yourself why I wanna do this.

The main reason is when I because on the project we're working on uses Django and when we put code like {{each}} (even on script tag with type set to text/html) Django view engine think it's a server tag and tries to render it like if it were a server side tag.

Update:
What I'm looking for is a way to Set a Delimeter on jQuery-tmpl like the one that is avaiable on Mustache.js
http://mustache.github.com/mustache.5.html (look for Set Delimiter)

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

扬花落满肩 2024-10-13 15:41:40

当然,如果你想在 HTML 中使用文字 {,请使用 templatetagopenblock

{% templatetag openblock %}

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

{% templatetag closeblock %}

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

{% templatetag openblock %}{% templatetag openblock %}each{% templatetag closeblock %}{% templatetag closeblock %}

Sure, if you want a literal { in your HTML, use templatetag with openblock.

{% templatetag openblock %}

If you want a literal }, use closeblock:

{% templatetag closeblock %}

So if you want {{each}} in your HTML, use:

{% templatetag openblock %}{% templatetag openblock %}each{% templatetag closeblock %}{% templatetag closeblock %}
疧_╮線 2024-10-13 15:41:40

另一种方法是在 js 文件中定义模板,该文件不被 django 作为模板处理。

如果这不可能,多米尼克方法的另一种替代方法是为“{{”和“}}”定义变量,可能是 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 并更改这些硬编码的正则表达式以满足您的需求。

A different approach would be to define the template in a js file which is not processed by django as a template.

If that is not possible another alternative to Dominic's approach would be to define variables for '{{' and '}}' maybe jqtmpl_open and jqtmpl_close accordingly and use them in template like this:

{{ jqtmpl_open }}each Languages{{ jqtmpl_close }}

This would be more readable in the template.

Changing a delimiter for jquery-tmpl is complicated. By looking at the code it seems that {{ is hard coded within some regular expressions there.

var oldManip = jQuery.fn.domManip, tmplItmAtt = "_tmplitem", htmlExpr = /^[^<]* (<[\w\W]+>)[^>]*$|\{\{\! /,
   newTmplItems = {}, wrappedItems = {}, appendToTmplItems, topTmplItem = { key: 0, data: {} }, itemKey = 0, cloneIndex = 0, stack = [];

The only solution would be to fork the jquery-tmpl for your project and change these hard coded regular expressions to accommodate your needs.

等数载,海棠开 2024-10-13 15:41:40

这个问题已经在这里被问过 jquery 模板标签与 Django 模板冲突! 但我想我应该根据我的经验来补充。

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

This question has already been asked here jquery template tags conflict with Django template! but I thought I would add from my experience.

In a nutshell, I've added this custom "raw" template tag to my jquery-tmpl/django projects: http://www.holovaty.com/writing/django-two-phased-rendering/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文