Ein guter Weg, dies zu tun ist, eine Richtlinie zu verwenden. Hier ist, wie es getan werden könnte:
Ansicht:
<div ng-app="foo" ng-controller="fooController">
<textarea text-length-handler="doThing()" text-length="6" ng-model="text">
</textarea>
</div>
js:
angular.module('foo', [])
.directive('textLength', function(){
return {
restrict: 'A',
require: 'ngModel',
scope: {
textLengthHandler: '&'
},
link: function ($scope, $element, $attrs, ctrl) {
var limit = parseInt($attrs.textLength);
var handler = function(){
if (ctrl.$modelValue.length >= limit) {
$scope.textLengthHandler()
}
};
$element.on('keypress', handler);
// remove the handler when the directive disappears
$scope.$on('destroy', function(){
$element.off('keypress', handler)
});
}
}
})
Fiddle hier:
http://jsfiddle.net/dtq0mz8m/
würde nicht funktionieren, wenn Leertaste gedrückt wird. –
Das wäre eine einfache Lösung, entfernen Sie einfach alle Leerzeichen aus der '$ scope.textChanged' -Funktion. – JimmyBoh
Sie können auch 'ng-trim =" false "' zum Eingabe-Tag hinzufügen, um zu verhindern, dass der Leerraum automatisch für die Leertaste getrimmt wird. –