将javascript变量传递给angularjs范围

时间:2013-11-04 20:08:20

标签: javascript angularjs flask

我正在使用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>

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

感谢您的帮助

3 个答案:

答案 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