angularjs – 如何验证angular指令中的动态表单字段?

前端之家收集整理的这篇文章主要介绍了angularjs – 如何验证angular指令中的动态表单字段?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想用指令创建的字段创建表单.数据的数据绑定正常工作但验证不起作用.

这是html:

  1. <body ng-controller="MainCtrl">
  2. <h1>form</h1>
  3. <form name="form">
  4. <div ng-repeat="conf in config">
  5. <div field data="data" conf="conf"></div>
  6. </div>
  7. </form>
  8. <pre>{{data|json}}</pre>
  9. </body>

控制器和字段指令:

  1. var app = angular.module('plunker',[]);
  2.  
  3. app.controller('MainCtrl',function($scope) {
  4. $scope.data = {name: '',age: ''}
  5. $scope.config = [
  6. {field: 'name',required:true},{field: 'age'}
  7. ];
  8. });
  9.  
  10. app.directive('field',function ($compile) {
  11. return {
  12. scope: {
  13. data: '=',conf: '='
  14. },link: function linkFn(scope,element,attrs) {
  15. // field container
  16. var row = angular.element('<div></div>');
  17.  
  18. // label
  19. row.append(scope.conf.field + ': ');
  20.  
  21. // field input
  22. var field = angular.element('<input type="text" />');
  23. field.attr('name',scope.conf.field);
  24. field.attr('ng-model','data.' + scope.conf.field);
  25. if (scope.conf.required) {
  26. field.attr('required','required');
  27. }
  28. row.append(field);
  29.  
  30. // validation
  31. if (scope.conf.required) {
  32. var required = angular.element('<span>required</span>');
  33. required.attr('ng-show','form.' + scope.conf.field + '.$error.required');
  34. row.append(required);
  35. }
  36.  
  37. $compile(row)(scope);
  38. element.append(row);
  39. }
  40. }
  41. });

问题是字段名称的验证不起作用,并且永远不会显示所需的验证文本.可能是ng-show中的表格在指令中是未知的.但我不知道如何将表单传递给字段指令.你能帮我解决一下吗?谢谢.

这是实时代码http://plnkr.co/edit/j0xc7iV1Sqid2VK6rMDF?p=preview

去做:

之前:

  1. $compile(row)(scope);
  2. element.append(row);

后:

  1. element.append(row);
  2. $compile(row)(scope);

‘planker’中的p / s为设施添加css:

  1. .ng-invalid {
  2. border: 1px solid red;
  3. }

猜你在找的Angularjs相关文章