以角度

时间:2015-05-22 05:56:54

标签: javascript jquery python angularjs django

我使用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响应。

他们的任何其他方法或我可以在角度端做的事情,以便我可以解决我的问题。

1 个答案:

答案 0 :(得分:0)

您可以采取的一种方法是将HTML / CSS / JS渲染与数据本身分开。

你可以通过首先在Python中生成HTML / CSS / JS并让Angular从Django后端获取JS滑块所需的数据(以JSON格式?)并渲染它来实现这一点。这意味着您将有2次访问后端 - 一个用于页面本身,另一个用于页面所需的数据。