Angular.js - ng-change wird nicht ausgelöst, wenn ng-pattern $ ungültig ist

Ich verwende ng-pattern, um einige Formularfelder zu validieren, und ich verwende ng-change, um Änderungen zu beobachten und zu verarbeiten. Ng-change (oder $ scope. $ Watch) wird jedoch nur ausgelöst, wenn sich das Formularelement im befindet $ gültiger Zustand! Ich bin ein Neuling bei Angular, daher weiß ich nicht, wie ich dieses Problem lösen kann, obwohl ich eine neue Richtlinie für den Weg sehe.

Wie kann ich ng-change dazu bringen, sowohl in ungültigen als auch in gültigen Formularelementzuständen ausgelöst zu werden, wobei ng-pattern weiterhin die Formularelementzustände wie zuvor festlegt?

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;
    };
});

Ich habe eine funktionierende JS-Geige erstellt, die das Problem zeigt, das ich habe.

http://jsfiddle.net/JAN3x/1/

Dieses kantige Thema scheint übrigens auch relevant zu sein:https://github.com/angular/angular.js/issues/1296

Antworten auf die Frage(4)

Ihre Antwort auf die Frage