我想用指令创建的字段创建表单.数据的数据绑定正常工作但验证不起作用.
这是html:
- <body ng-controller="MainCtrl">
- <h1>form</h1>
- <form name="form">
- <div ng-repeat="conf in config">
- <div field data="data" conf="conf"></div>
- </div>
- </form>
- <pre>{{data|json}}</pre>
- </body>
控制器和字段指令:
- var app = angular.module('plunker',[]);
- app.controller('MainCtrl',function($scope) {
- $scope.data = {name: '',age: ''}
- $scope.config = [
- {field: 'name',required:true},{field: 'age'}
- ];
- });
- app.directive('field',function ($compile) {
- return {
- scope: {
- data: '=',conf: '='
- },link: function linkFn(scope,element,attrs) {
- // field container
- var row = angular.element('<div></div>');
- // label
- row.append(scope.conf.field + ': ');
- // field input
- var field = angular.element('<input type="text" />');
- field.attr('name',scope.conf.field);
- field.attr('ng-model','data.' + scope.conf.field);
- if (scope.conf.required) {
- field.attr('required','required');
- }
- row.append(field);
- // validation
- if (scope.conf.required) {
- var required = angular.element('<span>required</span>');
- required.attr('ng-show','form.' + scope.conf.field + '.$error.required');
- row.append(required);
- }
- $compile(row)(scope);
- element.append(row);
- }
- }
- });
问题是字段名称的验证不起作用,并且永远不会显示所需的验证文本.可能是ng-show中的表格在指令中是未知的.但我不知道如何将表单传递给字段指令.你能帮我解决一下吗?谢谢.
去做:
之前:
- $compile(row)(scope);
- element.append(row);
后:
- element.append(row);
- $compile(row)(scope);
‘planker’中的p / s为设施添加css:
- .ng-invalid {
- border: 1px solid red;
- }