【问题标题】:Replace jquery-templ tag替换 jquery-templ 标签
【发布时间】:2011-05-22 19:40:13
【问题描述】:

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

例子:

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

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

姓名:${姓名} {{每种语言}} 我说 $value {{/每个}}

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

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

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

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

谢谢。

【问题讨论】:

    标签: django template-engine jquery-templates


    【解决方案1】:

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

    {% templatetag openblock %}
    

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

    {% templatetag closeblock %}
    

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

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

    【讨论】:

    • 谢谢多米尼克。这可以解决我的问题,但我想要一个基于 jquery-templ 的解决方案,就像我们在 mustache.js 上设置的分隔符一样
    【解决方案2】:

    另一种方法是在 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 并更改这些硬编码的正则表达式以满足您的需求。

    【讨论】:

    • 谢谢。我真的不想更改为 js,因为我的模板有一个单独的 html 文件。与带有代表我的模板的字符串的 js 文件相比,此文件非常易读且易于维护。我正在寻找的是一种在 jquery-tmpl 上进行分隔的方法,就像我们在 mustache.js 上所做的那样
    【解决方案3】:

    这个问题已经在这里问过jquery template tags conflict with Django template!,但我想我会根据我的经验补充一下。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 2017-01-08
      • 2010-12-12
      • 2013-12-07
      • 1970-01-01
      相关资源
      最近更新 更多