2013-11-04 22 views
1

我使用flask渲染html模板。我想将通过flask的render_template传递的变量add_html_data传递给AngularJs控制器作用域。将javascript变量传递给angularjs作用域

我试图

<body> 
    <div ng-controller="layoutController" ng-init="entries= {{ add_html_metadata|tojson }}"/> 
</body> 

在这种情况下{{}}表示烧瓶变量(I改变angularjs绑定语法{[{}]})。

而且,我试图创建一个中介javascript变量

​​

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

感谢您的任何援助

+0

您现在有一个全局变量'entries'。由于全局变量在js代码中的任何地方...角度控制器或指令或服务'$ scope.entries = entries'内都可用。 – charlietfl

回答

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> 
0

我有瓶没有经验,不管怎么说,尝试使用ng-include

1

我认为@ 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 
    }); 
}]);