是否可以先更新模型,然后运行验证器?我有一个异步验证器,该验证器在输入(类型range
)更新时运行。
我想要的是先更新HTML模板上的值,然后运行验证器。默认行为是先运行验证器,然后在验证完成后更新模型。
请参考以下代码段:
angular.module('app', [])
.controller('ctrl', ($scope) => {
$scope.value = 0;
})
.directive('validateValue', ($http) => {
return {
require: 'ngModel',
scope: false,
link: linkFn
};
function linkFn(scope, elem, attrs, modelCtrl) {
modelCtrl.$asyncValidators.validValue = (m, v) => {
return $http.get('https://httpbin.org/delay/1');
};
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="ctrl">
<form>
<input type="range" ng-model="value" ng-model-options="{debounce: 100}" validate-value> {{value}}
</form>
</div>
</div>
答案 0 :(得分:1)
使用allowInvalid: true
。从逻辑上讲这是有道理的-如果您想在验证之前更改值,则应在模型中允许使用无效值。
ng-model-options="{debounce: 100, allowInvalid: true}"