Angular.js - ng-change не запускается, когда ng-pattern $ недопустим
Я использую ng-pattern для проверки некоторых полей формы, и я использую ng-change с ним для наблюдения и обработки любых изменений, однако ng-change (или $ scope. $ Watch) будет срабатывать только тогда, когда элемент формы находится в $ действительное состояние! Я новичок в angular, поэтому я не знаю, как решить эту проблему, хотя я подозреваю, что новая директива - это путь.
Как я могу получить ng-change для запуска как в $ invalid, так и в $ valid состояниях элемента формы, при этом ng-pattern все еще устанавливает состояния элемента формы, как и раньше?
Html:
<div ng-app="test">
<div ng-controller="controller">
<form name="form">
<input type="text" name="textbox" ng-pattern="/^[0-9]+$/" ng-change="change()" ng-model="inputtext"> Changes: {{ changes }}
</form>
<br>
Type in any amount of numbers, and changes should increment.
<br><br>
Now enter anything that isn't a number, and changes will stop incrementing. When the form is in the $invalid state, ng-change doesn't fire.
<br><br>
Now remove all characters that aren't numbers. It will increment like normal again. When the form is in the $valid state, ng-change will fire.
<br><br>
I would like ng-change to fire even when the the form is $invalid.
<br><br>
form.$valid: <font color="red">{{ form.$valid }}</font>
</div>
</div>
Javascript:
angular.module('test', []).controller('controller', function ($scope) {
$scope.changes = 0;
$scope.change = function () {
$scope.changes += 1;
};
});
Я создал работающую JS Fiddle, которая показывает мою проблему.
Кстати, эта угловая проблема также кажется актуальной:https://github.com/angular/angular.js/issues/1296