我使用angular作为前端,使用Python-Django作为后端。我使用TemplateResponse()
在python中渲染HTML,然后将此响应发送到angular作为响应,我将其存储在某些$scope variable
中。这里重要的是我在PYthon中呈现的HTML包括Css,Js,HTML + Angular代码。例如,
<div ng-repeat='val in values'>
<span>{{ val }}</span>
</div>
现在Python将呈现此代码(包括更多但是这样的示例)并将响应发送到angular(我也将从python发送此值数据),我将其存储在$ scope中。 / p>
$scope.html_response = response sent from Python
$scope.values = values data from python (it will be a object so angular can loop over this easily )
我拥有HTML中使用的角度HTMl + Angular Scope中的所有内容。 现在主要的是如何将它们绑定在一起,以便HTML获得角度范围并循环数据。为此,我使用了angular指令。
HTML:
<div dynamic="html_response"></div>
Angular指令:
app.directive('dynamic', function ($compile) {
return {
restrict: 'A',
replace: true,
link: function (scope, ele, attrs) {
scope.$watch(attrs.dynamic, function(html) {
ele.html(html);
$compile(ele.contents())(scope);
});
}
};
});
这个指令正在为我做角度范围与HTML的绑定。
在我遇到一个问题之前,一切都在为我工作。正如我上面解释的那样,我首先渲染HTML然后绑定角度范围。但在我的一个案例中(一个js滑块)我需要首先渲染角度,然后渲染HTML(js代码)意味着滑块js必须在角度后渲染,以便滑块已经可以显示数据。
但是我无法首先从python端渲染角度数据。无论它包含什么,我都必须向角度发送HTML响应。
他们的任何其他方法或我可以在角度端做的事情,以便我可以解决我的问题。
答案 0 :(得分:0)
您可以采取的一种方法是将HTML / CSS / JS渲染与数据本身分开。
你可以通过首先在Python中生成HTML / CSS / JS并让Angular从Django后端获取JS滑块所需的数据(以JSON格式?)并渲染它来实现这一点。这意味着您将有2次访问后端 - 一个用于页面本身,另一个用于页面所需的数据。