我正在使用flask来渲染一个html模板。我想将变量add_html_data(我通过flask的render_template传递给AngularJs控制器范围)传递给它。
我试过
<body>
<div ng-controller="layoutController" ng-init="entries= {{ add_html_metadata|tojson }}"/>
</body>
在这种情况下,{{}}表示烧瓶变量(我将angularjs绑定语法更改为{[{}}})。
另外,我尝试创建一个中间javascript变量
<script type="text/javascript">var entries = {{ add_html_metadata|tojson }}</script>
但是,仍然无法弄清楚如何将它附加到控制器范围。
感谢您的帮助
答案 0 :(得分:2)
您可以在控制器中创建init()
功能:
app.controller('layoutController', function($scope) {
$scope.init = function(html_metadata) {
$scope.html_metadata = html_metadata;
}
});
然后在您的模板中,您可以使用以下数据调用此函数:
<body>
<div ng-controller="layoutController" ng-init="init({{ add_html_metadata|tojson }})"/>
</body>
答案 1 :(得分:1)
我认为@Miguel的答案可能有效,但我只是创建一个restful调用来返回定义为add_html_metadata
的JSON数据块,并使用$http
请求将其放在控制器的范围内,这就是做事的有条理的方式。像这样:
@app.route("/html_metadata", methods=["GET"])
def get_html_metadata():
#do something in here
return jsonify(html_metadata)
在角度控制器中
myApp.controller('layoutController', ['$scope', function($scope) {
$http({method: 'GET', url: '/html_metadata'}).
success(function(data, status, headers, config) {
$scope.html_metadata = data
});
}]);
答案 2 :(得分:0)
我对烧瓶没有经验,反正尝试使用ng-include