为什么选择菜单$ invalid总是如此?

时间:2015-08-19 11:39:43

标签: javascript angularjs

我有一个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,它仍然是真的。我选择了女性,然后因无效而无效。

基本上如果我选择男性,错误就会消失。

任何想法为什么?感谢

1 个答案:

答案 0 :(得分:0)

ng-model-options="{ updateOn: 'mousedown blur'}

这是导致我在选择菜单上进行验证的问题,我只需将其删除。