我有一个下拉列表,可以动态生成任意数量的文本输入,所有这些输入都有不同的验证规则(最小/最大长度、模式等)。根据其他几个stackoverflow问题,即。(如何验证使用 ng-repeat、ng-show (angular) 动态创建的输入)使用 ng-form 模块可以让您创建具有动态验证的动态表单元素。
我已经这样做了,但问题是当基于下拉列表中的选择更改文本字段的数量时,验证规则不会相应更新。例如,第一个下拉选项将生成 1 个最小长度为 3 的文本输入。第二个选项也可能生成 1 个文本输入,但它的最小长度将为 1。即使最小长度规则为 1,角度最终也会验证最小长度3,来自原始选择的文本字段。
我的问题是,在不创建某种自定义指令的情况下,这是否可能在角度上实现?另一种解决方案是预先为每个下拉选择输出所有可能的文本元素,并使用基于下拉选择的 ng-show 来显示/隐藏每个集合。但我想保持模板干净并使用 ng-repeat 来动态生成它们,就像我现在一样。
我已经建立了一个最小的例子:
var validationApp = angular.module('validationApp', []);
validationApp.controller('ValidationCtrl', ['$scope', function($scope) {
$scope.textChoices = [
{ label: "1 line", validation: [ { minLength: 3 } ] },
{ label: "2 lines", validation: [ { minLength: 1 }, { minLength: 3 } ] },
{ label: "3 lines", validation: [ { minLength: 2 }, { minLength: 2 }, { minLength: 3 } ] }
];
$scope.choice = $scope.textChoices[0];
$scope.text = [];
}]);
请在此处查看 html 和完整示例:http: //jsfiddle.net/anpsince83/kBVR2/