我在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表單很好地發揮w/Angular。
謝謝。
不確定我的問題是否正確,您應該能夠從'$ scope.form.form_name'右邊獲取表單? – Developer
不是。如果我嘗試獲取TypeError:無法讀取未定義的屬性'form_name'。我想我需要實際指定表單的名稱。 – trubliphone
嘗試移除表單名稱的{{}}。只需將它作爲form.form_name,然後嘗試獲取它,如前所述 – Developer