错误角度.js用Flas

2024-04-20 08:12:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下结构和代码:

project/
       app.py
       templates/
                /index.html
       static/
             /angular.js

索引.html

^{pr2}$

而且应用程序副本

from flask import Flask
app = Flask(__name__)
from flask import render_template

@app.route('/')
def hello_world():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)

无论我做什么,我仍然有以下错误:UndefinedError: 'ctrl' is undefined我想这是由于烧瓶没有加载角度.js

我也尝试了静态路径

<script type=text/javascript src="{{url_for('static', filename='angular.js')}}"></script><script type=text/javascript src="../static/angular.js"></script>

但还是没有成功。。。有什么想法吗?在


Tags: namefromimportappflaskindexhtmltype
1条回答
网友
1楼 · 发布于 2024-04-20 08:12:45

当你把

{{ctrl.foo}}

在模板中,Jinja查找名为ctrl的上下文变量。您的hello_world端点不提供任何此类变量。在

如果您希望ctrl由Angular而不是Jinja处理,则需要告诉Jinja在呈现的HTML中包含大括号。这可以通过surrounding what you have in additional curly braces来完成。在

^{pr2}$

如果你不想要所有的大括号,你有几个其他的选择。在

您可以使用Jinja的rawendraw指令完全按照提供的方式输出其内容。在

{% raw %} {{ctrl.foo}} {% endraw %}

另一个选项是change the symbols Angular looks for。在

var app = angular.module('myApp', []);

app.config(['$interpolateProvider', function($interpolateProvider) {
  $interpolateProvider.startSymbol('[[');
  $interpolateProvider.endSymbol(']]');
}]);

这样你就可以使用

[[ctrl.foo]]

相关问题 更多 >