1

我正在使用烧瓶来呈现 html 模板。我想将通过flask的render_template传递的变量add_html_data传递给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>

但是,仍然无法弄清楚如何将其附加到控制器范围。

感谢您的帮助

4

3 回答 3

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>
于 2013-11-05T01:25:12.980 回答
1

我认为@Miguel 的答案可能有效,但我只会创建一个安静的调用来返回定义为的 JSON 数据块add_html_metadata,并使用$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
   }); 
}]);
于 2013-11-05T06:11:18.250 回答
0

I have no experience with flask, anyways, Try to use ng-include

于 2013-11-04T20:17:41.660 回答