0

全部,

我在 Angular 控制器中有一个表单。但是该表单的名称是从服务器动态生成的(由 Django)。有谁知道我如何访问该表单(目的是在与服务器进行一些交互后更改某些项目的有效性)。

这是一些代码:

my_template.html:

<html>
  <div ng-app="MyApp">
    <div ng-controller="MyController as my_controller">
      <form name={{ form.form_name }}
        {% for field in form %}
          {{ field }}
        {% endfor %}
      </form>
      <button ng-click="do_something">do something</button>
    </div>
  </div>
</html>

我的视图.py:

def my_view(request):
  form = MyForm(form_name=generate_a_random_string())
  return render_to_template({"form":form}
  return render_to_response('my_template.html', {"form": form})

my_app.js:

(function() {
    var app = angular.module("MyApp");
    app.controller("MyController", ['$scope', function($scope) {
      $scope.do_something = function() {
        /* OBVIOUSLY THIS DOESN'T WORK */
        /* BUT WHAT DO I REPLACE "my_form" WITH ? */
        my_form['some_field_name'].$setValidity('some_validity_type', false);
        my_form['some_field_name'].$setDirty();
      }
    }]);
});

如果有帮助,我正在使用 django-angular 来让我的 Django 表单与 Angular 一起玩得很好。

谢谢。

4

1 回答 1

0

表格名称如

<form name="myForm">

将在您的控制器中反映为同名的 NgFormController

myController.myForm

我认为问题的一部分是{{ form.form_name }}您的模板中有据我所知尚未在您的控制器中初始化。您可能需要先在控制器中初始化表单名称,然后使用 ng-repeat 构建表单 DOM 元素并从那里提取名称。然后,您可以通过this.form_name在视图控制器中使用来访问 NgFormController。

于 2016-12-08T17:24:23.777 回答