我有指令是這樣的:
.directive('noWhitespace', ['$parse', function($parse) {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, ngModel) {
/*
scope.$watch(attrs.ngModel, function(value) {
var getter = $parse(value);
update(getter(scope));
});
*/
function update(viewValue) {
console.log(JSON.stringify(viewValue));
if (viewValue.match(/\s/)) {
ngModel.$setValidity('whitespace', false);
return undefined;
} else {
ngModel.$setValidity('whitespace', true);
return viewValue;
}
}
ngModel.$parsers.unshift(update);
}
};
}])
,當我使用它是這樣的:
<form name="something" novalidate>
<input ng-model="myValue" no-whitespace/>
<div ng-show="something.myValue.$error.whitespace">
Error
</div>
</form>
和I型的東西,那麼在末尾update
處的幾個空格不會被調用,直到我在這些空格之後鍵入字符,然後出現錯誤,表明有空格。 (同樣的情況發生時,我把空間放在開始或只有空格)。爲什麼是這樣,以及如何解決它?正如你在評論中看到的,我嘗試使用$watch+$parse
,但得到了錯誤Cannot read property 'match' of undefined
。
爲什麼ng-trim對div而不是輸入? – jcubic
編輯...對不起。 – Wawy