作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
将变量从 Flask 模板传递到 Javascript 文件的最佳方法是什么?这是我的代码
我的网络应用程序中有一个简单的 View :
@webapp.route('/bars')
def plot_d3_bars():
return render_template("bars.html", calendarMap = calendarMap)
我有一个模板化的 HTML 文件,如下所示:
{% extends "base.html" %}
{% block title %} Bar View {% endblock %}
{% block content %}
{% with calendarMap=calendarMap %}
{% include "buttons.html" %}
{% endwith %}
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script src="/static/css/d3.tip.v0.6.3.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<!-- Custom codes for d3 plotting -->
<link href="/static/css/bars.css" rel="stylesheet">
<script> var calendarMap = {{ calendarMap|tojson }}; </script>
<script src="/static/bars.js"></script>
{% endblock %}
以前的答案告诉我,我可以将变量 jsonify 化为 JSON 对象,然后我就可以使用它了。但是,我想在 bars.js 中使用 calendarMap 吗?但我遇到了一些范围界定问题(即 bars.js 无法识别此 calendarMap),我应该怎么做?
最佳答案
好吧,也许为时已晚,但我们开始吧。
当您使用嵌入在 HTML 代码中的 JavaScript 代码时,此脚本将与 HTML 一起呈现。因此,在 JavaScript 中引用的任何变量(作为 Flask 变量)都将在呈现的页面中可用。
当您使用在 HTML 代码中链接的外部 JavaScript 文件时,在呈现 HTML 之前,其代码已经存在。在某些情况下,我可能会说大多数情况下,您不是该文件的所有者。所以在 JS 文件中引用的任何变量都不会被渲染。
您可以通过 JS 代码将此变量放入 HTML 中,并使用来自外部 JS 文件的函数使用此数据。
或者您可以在渲染模板之前渲染这个 JS 文件,然后使用它。但我强烈建议不要使用这种方法。
关于javascript - Flask|Jinjia2|Javascript : Passing Flask template variable into Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32878656/
我是一名优秀的程序员,十分优秀!