将javascript变量传递给angularjs范围

Pass javascript variable to angularjs scope

本文关键字:angularjs 范围 javascript 变量      更新时间:2023-09-26

我正在使用烧瓶来渲染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>

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

感谢您的任何帮助

您可以在

控制器中创建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>

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

无论如何,我没有烧瓶的经验,请尝试使用 ng-include