我正在为一个基于plone的网站创建一个页面模板。我使用模板属性语言定义了一些变量:
<tal:macro metal:define-macro="sample" tal:define="var python: here.getThisVar();">现在,我想在一个extern文件中使用var,通过单击模板中的一个按钮调用该文件。如何传递变量,以便在javascript文件中使用它?
发布于 2013-11-17 07:40:24
在模板中,通过使用TAL编写javascript变量,如下所示:
<script type="text/javascript" tal:content="string:var MY_VAR=${view/myVar};"></script>现在,只要您在上面的行之后调用MY_VAR,外部js的作用域就可以使用它了.
发布于 2013-11-18 08:21:15
另一种方法是:使用HTML5 data属性将变量注入HTML::
<div id="myVar" tal:attributes="data-myVar python:here.getThisVar();">然后使用JAvaScript/jQuery阅读它::
$('#myVar').data('myVar');发布于 2013-11-16 16:25:47
做这件事有很多种方法。所有这些都需要像构造文本一样构造Javascript代码,然后返回结果,以便插入到页面中,或者呈现为javascript注册表中的JS资源。
如果您想要一个健壮的示例,其中包括关于消息可译性的规定,并与JS资源注册中心一起工作,请参见Plone本身的方式:https://github.com/plone/Products.CMFPlone/blob/4.2.7/Products/CMFPlone/browser/jsvariables.py
https://stackoverflow.com/questions/20016874
复制相似问题