代码之家  ›  专栏  ›  技术社区  ›  mpen

如何过滤模板标签?

  •  8
  • mpen  · 技术社区  · 14 年前

    我有一个标签,看起来像这样:

    {% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %}
    

    它只是呈现一个空窗体。但现在我想把它的输出传递给 escapejs 过滤器,以便我可以在JavaScript变量中使用它。我该怎么做?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Trenton    5 年前

    对模板标记的输出应用过滤器也可以在没有任何外部依赖的情况下使用内置的 filter 模板标记。从 documentation :

    [此模板标记]通过一个或多个筛选器筛选块的内容。可以用管道指定多个过滤器,过滤器可以有参数,就像在变量语法中一样。

    {% filter escapejs %}
    {% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %}
    {% endfilter %}
    
        2
  •  15
  •   Jordan Reiter    14 年前

    许多标签支持 as variablename 作为变量名 然后将该标记的输出放置在变量中而不是显示。

    {% partial %} tag可能支持这一点。下面是一个例子,如果是这样的话:

    {% partial "partials/vehicleform.html" vehicle=vehicles.empty_form as myvar %}{{ myvar|escapejs }}
    

    "Partial tag" snippet

    Capture template output as a variable ,然后将筛选器应用于捕获的内容,如下所示:

    {% captureas myvar %}{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form  %}{% endcaptureas %}{{ myvar|escapejs }}
    
        3
  •  1
  •   mpen    14 年前

    将数据放入JS变量的另一种解决方案:

    <div class="display:none" id="empty-vehicle-form">{% partial "partials/vehicleform.html" vehicle=vehicles.empty_form %}</div>
    

    然后抓住它,同时取下它

    var empty_form = $('#empty-vehicle-form').remove().html();
    

    此解决方案的优点是,其他JS脚本可以在将其从DOM中删除之前对其进行预处理。 escapejs