全部,
我在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>
my_view.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一起玩。
感谢。
答案 0 :(得分:0)
中的表单名称
<form name="myForm">
将在您的控制器中反映为同名的NgFormController
myController.myForm
我认为问题的一部分是你的模板中有{{ form.form_name }}
,我可以告诉你还没有在你的控制器中初始化。
您可能需要先在控制器中初始化表单名称,然后使用ng-repeat构建表单DOM元素并从中拉出名称。然后,您可以在视图控制器中使用this.form_name
来访问NgFormController。