我有一个HTML:
<form name="form">
<select name="gender" ng-model="model" ng-required="true"
ng-model-options="{ updateOn: 'mousedown blur'}">
<option value="" disabled>--Select--</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
</form>
<form-error element="gender"><p>Please select Gender</p></form-error>
我在指令
中使用angularJS javascript.directive('formError', function() {
'use strict';
return {
require: ['^form'],
restrict: 'E',
templateUrl: '/partials/form-fields/validations/error.html',
scope: {},
transclude: true,
replace: true,
link: function($scope, $element, $attr, form) {
var element = $attr.element;
$scope.form = form[0];
$scope.$watch('form.' + element + '.$viewValue', function(newVal, oldVal){
$scope.$dirty = $scope.form[element].$dirty;
$scope.$valid = $scope.form[element].$valid;
$scope.$invalid = $scope.form[element].$invalid;
$scope.$value = newVal;
console.log($scope.form.gender.$invalid);
}, true);
$scope.$watch('form.$submitted', function(newVal, oldVal){
$scope.$submitted = newVal;
}, true);
}
});
上面的指令链接到下面的这个html页面
<div class="input__error"
ng-if="($dirty && $invalid && $value !== '') || ($submitted && $invalid)"
ng-transclude></div>
输入文本$无效,当我输入任何文本时,从true到false,但在选择菜单上,我选择了男性,但是对于$ invalid,它仍然是真的。我选择了女性,然后因无效而无效。
基本上如果我选择男性,错误就会消失。
任何想法为什么?感谢
答案 0 :(得分:0)
ng-model-options="{ updateOn: 'mousedown blur'}
这是导致我在选择菜单上进行验证的问题,我只需将其删除。