【发布时间】:2015-03-27 08:16:19
【问题描述】:
在表单中使用前缀时不会显示表单验证错误
当表单使用 scope_prefix 时,验证会中断。 错误消息停止显示,例如“需要字段”中断。
下面的例子:
class ExampleForm(NgModelFormMixin, NgFormValidationMixin, forms.ModelForm):
form_name = 'example_form_name'
controller = "ExampleFormController"
def __init__(self, *args, **kwargs):
kwargs.update(scope_prefix="formData")
super(ExampleForm, self).__init__(*args, **kwargs)
html:
<form name="{{ form.form_name}}" ng-controller="{{ form.controller}}" novalidate>
{{ form }}
<button type="submit" ng-disable="{{ form.form_name }}.$invalid"></button>
</form>
html 呈现为:
<form name="example_form_name" class="ng-pristine ng-invalid ng-invalid-required" ng-controller="ExampleFormController" novalidate>
<ul class="djng-form-errors ng-hide" ng-show="example_form_name.$dirty"></ul>
<ul class="djng-form-errors" ng-show="example_form_name.$pristine">
<li ng-show="example_form_name.$message" class="invalid ng-binding ng-hide" ng-bind="example_form_name.$message"></li>
</ul>
<ul class="djng-field-errors ng-hide" ng-show="example_form_name.textarea.$dirty">
<li ng-show="example_form_name.textarea.$error.required" class="invalid">This field is required.</li>
<li ng-show="example_form_name.textarea.$valid" class="valid ng-hide"></li>
</ul>
<ul class="djng-field-errors" ng-show="example_form_name.textarea.$pristine">
<li ng-show="example_form_name.textarea.$message" class="invalid ng-binding ng-hide" ng-bind="example_form_name.textarea.$message"></li>
</ul>
<p>Label <textarea cols="40" name="textarea" ng-model="formData.textarea" ng-required="true" rows="10" class="ng-pristine ng-invalid ng-invalid-required" required="required"></textarea></p>
<button class="submit" ng-disable="example_form_name.$invalid">Submit</button>
</form>
控制器
controllers.ExampleFormController = function($scope) {
$scope.formData = {};
$scope.formSubmit = function() {
// form submit actions
}
}
但验证不起作用..如果我删除 scope_prefix 一切正常。 我正在使用 django-angular 0.7.0 我在这里错过了什么..
谢谢
【问题讨论】:
-
@sri_kanth 你解决过这个问题吗?如果是这样,您可以发布答案吗?我有同样的问题。谢谢
-
能贴出控制器代码吗?
-
我的直觉是您缺少 $scope.formData 的初始化。发布控制器代码后,我可以验证。这是一个工作小提琴。删除 textarea 的正文,关闭标签,它可以工作:jsfiddle.net/5b9gbnpL/1
-
因此控制器中没有太多代码。 @dubhov 在控制器中为变量提供了一些值,给出了错误消息,但正在提交表单而没有更正错误 - 我的意思是 ng-disable="example_form_name.$invalid" 不起作用。看看这个 - jsfiddle.net/rsrikanth080/5b9gbnpL/2
-
一年前来自 > 的回复吧?发布答案...找到了。
标签: django angularjs forms validation django-forms