【问题标题】:Re render content in angular以角度重新渲染内容
【发布时间】:2015-08-04 00:59:51
【问题描述】:

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

$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 中使用的 Angular HTMl + Angular Scope 中的所有内容。 现在主要的是如何将它们绑定在一起,以便 HTML 获得角度范围并循环数据。为此,我使用了角度指令。

HTML:

<div dynamic="html_response"></div>

角度指令:

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);
      });
    }
  };
}); 

这个指令正在为我做 Angular 范围与 HTML 的绑定。

在我遇到一个问题之前,一切都对我有用。正如我上面解释的,我首先渲染 HTML,然后绑定角度范围。但在我的一种情况下(一个 js 滑块),我需要先渲染 angular,然后渲染 HTML(js 代码),这意味着滑块 js 必须在 angular 之后渲染,以便滑块已经可以显示数据。

但我不能先从 python 端渲染角度数据。我必须将 HTML 响应发送到 Angular 中包含的任何内容。

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

【问题讨论】:

  • 当您打印 {{ val }} 时,值是来自 angular 还是 django?
  • @Gocht 它的角度,我知道 hv 相同的 syntex 并且那是因为我已经改变了 angular syntex 。我实际上正在使用这个语法 {$ val $} 但是这里我已经写了{{ val }} 这样角度开发人员就不会因为我使用了错误的语法而感到困惑。

标签: javascript jquery python angularjs django


【解决方案1】:

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

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

【讨论】:

  • 感谢您的建议。我一定会研究这种方法
猜你喜欢
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 2019-07-16
相关资源
最近更新 更多