すべて、角度コントローラから動的に名前付きフォームにアクセス
私は角型コントローラの中にフォームを持っています。しかし、そのフォームの名前は(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を使用しています。
ありがとうございました。
あなたの質問が正しいかどうかわからない場合は、 '$ scope.form.form_name'の書式を正しく取得できるはずですか? – Developer
Nope。私が試みると 'TypeError:undefined'の 'form_name'プロパティを読み込めません。私は実際にフォームの名前を指定する必要があると思います。 – trubliphone
フォーム名のために{{}}を削除してください。 form.form_nameとして持っていて、先ほど触れたようにしてみてください。 – Developer