Angular 1.2.9 有效提交后重置字段和验证
Angular 1.2.9 resetting field and validation after valid submit
我在尝试重置我的表单时遇到问题,但没有出现必填字段错误消息。提交时,如果表单有效,我将调用以下函数。
$scope.reset = function() {
$scope.createUser.$submitted = false;
$scope.createUser.$dirty = false;
$scope.createUser.$pristine = true;
$scope.user = angular.copy($scope.master);
$scope.createUser.$setPristine(true);
}
这会重置表单,但会提示以下消息。
我一直在寻找一种将表单重置为 prestine 的方法,但没有任何运气,我不确定它是否是因为我添加 has-error class.
的方式
ng-class="{'has-error': (createUser.name.$dirty || submitted) && createUser.name.$error.required}"
如果有任何帮助,我将不胜感激,我有 plunker 可以使用。
您似乎没有重置您在 has-error 中使用的已提交变量。您正在重置 $submitted
我不确定这是否是您想要的,但这 plunker 是否解决了您的问题?
首先,就像 Mathew 所说的那样,您对提交的变量有疑问,$submitted 未在您想使用提交的任何地方定义。
并且您想检查您的表格,只有在正确的情况下才将其设置为 false。
我也会像这样进行验证
ng-class="{'has-error': (createUser.name.$dirty &&
createUser.name.$invalid && submitted)}"
但对于控制器,您不必这样做:
$scope.reset = function() {
$scope.submitted = true;
if($scope.createUser.$valid){
$scope.submitted = false;
$scope.createUser.$dirty = false;
$scope.createUser.$pristine = true;
$scope.user = angular.copy($scope.master);
$scope.createUser.$setPristine(true);
}
}
编辑您的重置函数:
$scope.reset = function() {
$scope.createUser.$submitted = false;
}
你不需要别的了..祝你好运:)
我在尝试重置我的表单时遇到问题,但没有出现必填字段错误消息。提交时,如果表单有效,我将调用以下函数。
$scope.reset = function() {
$scope.createUser.$submitted = false;
$scope.createUser.$dirty = false;
$scope.createUser.$pristine = true;
$scope.user = angular.copy($scope.master);
$scope.createUser.$setPristine(true);
}
这会重置表单,但会提示以下消息。
我一直在寻找一种将表单重置为 prestine 的方法,但没有任何运气,我不确定它是否是因为我添加 has-error class.
的方式ng-class="{'has-error': (createUser.name.$dirty || submitted) && createUser.name.$error.required}"
如果有任何帮助,我将不胜感激,我有 plunker 可以使用。
您似乎没有重置您在 has-error 中使用的已提交变量。您正在重置 $submitted
我不确定这是否是您想要的,但这 plunker 是否解决了您的问题? 首先,就像 Mathew 所说的那样,您对提交的变量有疑问,$submitted 未在您想使用提交的任何地方定义。 并且您想检查您的表格,只有在正确的情况下才将其设置为 false。
我也会像这样进行验证
ng-class="{'has-error': (createUser.name.$dirty && createUser.name.$invalid && submitted)}"
但对于控制器,您不必这样做:
$scope.reset = function() {
$scope.submitted = true;
if($scope.createUser.$valid){
$scope.submitted = false;
$scope.createUser.$dirty = false;
$scope.createUser.$pristine = true;
$scope.user = angular.copy($scope.master);
$scope.createUser.$setPristine(true);
}
}
编辑您的重置函数:
$scope.reset = function() {
$scope.createUser.$submitted = false;
}
你不需要别的了..祝你好运:)