我有一个字段的最小值取决于另一字段中给定的输入的要求。
<input type="number" name="minval" class="form-control" ng-model="user.minval" ng-required="true">
此输入用于验证另一个字段
<input type="number" name="inputval" class="form-control" ng-model="user.inputval" ng-required="true" min="{{user.minval}}">
但这不能按预期工作..如果我以后更改“ minval”,则输入不会得到重新验证。
我已经尝试根据一些解决方案中的建议从JS设置min的初始值,但这也无济于事…
链接器
使用ng-min / ng-max指令
app.directive('ngMin', function() { return { restrict: 'A', require: 'ngModel', link: function(scope, elem, attr, ctrl) { scope.$watch(attr.ngMin, function(){ if (ctrl.$isDirty) ctrl.$setViewValue(ctrl.$viewValue); }); var isEmpty = function (value) { return angular.isUndefined(value) || value === "" || value === null; } var minValidator = function(value) { var min = scope.$eval(attr.ngMin) || 0; if (!isEmpty(value) && value < min) { ctrl.$setValidity('ngMin', false); return undefined; } else { ctrl.$setValidity('ngMin', true); return value; } }; ctrl.$parsers.push(minValidator); ctrl.$formatters.push(minValidator); } }; }); app.directive('ngMax', function() { return { restrict: 'A', require: 'ngModel', link: function(scope, elem, attr, ctrl) { scope.$watch(attr.ngMax, function(){ if (ctrl.$isDirty) ctrl.$setViewValue(ctrl.$viewValue); }); var maxValidator = function(value) { var max = scope.$eval(attr.ngMax) || Infinity; if (!isEmpty(value) && value > max) { ctrl.$setValidity('ngMax', false); return undefined; } else { ctrl.$setValidity('ngMax', true); return value; } }; ctrl.$parsers.push(maxValidator); ctrl.$formatters.push(maxValidator); } }; });