当我将指令与隔离范围与自定义验证结合使用时,验证在验证失败时将scope
值设置为undefined
。
以下是代码的{jsfiddle:http://jsfiddle.net/5mKU3/7/
html:
<div ng-app="myApp">
<div ng-controller="example">
someModel: {{someValue}}<br>
<input type="text" isolate ng-model="someValue" validate />
</div>
</div>
JS:
angular.module('myApp', []).directive('isolate', function () {
return {
require: 'ngModel',
scope: {}
};
}).directive('validate', function () {
return {
require: 'ngModel',
link: function (scope, element, attrs, ctrl) {
ctrl.$parsers.unshift(function (value) {
value = value || '';
if (value.length < 10) {
ctrl.$setValidity('fail', true);
return value;
} else {
ctrl.$setValidity('fail', false);
return undefined;
}
});
}
};
}).controller('example', function ($scope) {
$scope.someValue = '1234';
});
输入超过10个字符时验证失败。如果验证失败,如何$scope.someValue
没有重置为undefined
?
我目前使用的角度版本是1.2.18。
答案 0 :(得分:0)
将ngModelOptions.allowInvalid
设为true
。
您的输入将是:
<input type="text" isolate ng-model="someValue" validate ng-model-options="{allowInvalid:true}"/>