SimpleForm验证和Angular

时间:2015-07-06 15:02:01

标签: ruby-on-rails angularjs validation ruby-on-rails-4 simple-form

我们在项目中使用简单的表单,现在我创建了一个作为角度模板加载的表单。我还想使用angular来处理验证,但是从响应中获取错误。你知道任何准备好的角度指令来处理简单形式的验证错误吗?

1 个答案:

答案 0 :(得分:1)

以下是angularjs表单的表单验证策略:

  1. ng-minlength:指定所需输入文本的最小长度

  2. ng-maxlength:指定所需输入文本的最大长度

  3. ng-pattern:指定要检查以验证输入文本的js正则表达式
  4. 如果你有一个api并希望在字段中获得一个唯一值,而不是调整此代码段
  5. 
    
    var app = angular.module('validationExample', []);
    
    app.directive('ensureUnique', ['$http', function($http) {
      return {
        require: 'ngModel',
        link: function(scope, ele, attrs, c) {
          scope.$watch(attrs.ngModel, function() {
            $http({
              method: 'POST',
              url: '/api/check/' + attrs.ensureUnique,
              data: {'field': attrs.ensureUnique}
            }).success(function(data, status, headers, cfg) {
              c.$setValidity('unique', data.isUnique);
            }).error(function(data, status, headers, cfg) {
              c.$setValidity('unique', false);
            });
          });
        }
      }
    }]);
    
    
    

    var app = angular.module('validationExample', []);
    
    app.directive('ensureUnique', ['$http', function($http) {
      return {
        require: 'ngModel',
        link: function(scope, ele, attrs, c) {
          scope.$watch(attrs.ngModel, function() {
            $http({
              method: 'POST',
              url: '/api/check/' + attrs.ensureUnique,
              data: {'field': attrs.ensureUnique}
            }).success(function(data, status, headers, cfg) {
              c.$setValidity('unique', data.isUnique);
            }).error(function(data, status, headers, cfg) {
              c.$setValidity('unique', false);
            });
          });
        }
      }
    }]);
    

    您可以通过这种方式访问​​表单字段

    formName.inputFieldName.property
    

    您可以检查用户是否触摸了表单

    formName.inputFieldName.$pristine;
    

    您可以检查用户是否触摸了表单,或者是否与$ pristine

    相反
    formName.inputFieldName.$dirty
    

    您可以检查表单是否有效

    formName.inputFieldName.$valid
    

    与$ valid

    相反
    formName.inputFieldName.$invalid
    

    您还可以使用这些类名称格式化表单

    .ng-pristine {}
    .ng-dirty {}
    .ng-valid {}
    .ng-invalid {}