title: Watch form model for changes
body: <p>Assuming a given form such as <code>&lt;form name="myForm"&gt;</code>, it's easy enough to watch for validity, error, dirty state, etc. using a simple watch:</p>
  
  <pre><code>$scope.$watch('myForm.$valid', function() {
    console.log('form is valid? ', $scope.myForm.$valid); 
  });
  </code></pre>
  
  <p>However, there doesn't appear to be an easy way to watch if any given input in this form has changed. Deep watching like so, does not work:</p>
  
  <pre><code>$scope.$watch('myForm', function() {
    console.log('an input has changed'); //this will never fire
  }, true);
  </code></pre>
  
  <p><code>$watchCollection</code> only goes one level deep, which means I would have to create a new watch for every input. Not ideal. </p>
  
  <p>What is an elegant way to watch a form for changes on any input without having to resort to multiple watches, or placing <code>ng-change</code> on each input?</p>