title: $setValidity not updating $valid flag in real-time
body: <p>I'm using a custom form input validator implemented using a directive.  In the directive, the validation event is bound to the input's blur event. So on blur, it sets the validity of the model using $setValidity.  However, the $valid state is not updated until the model's value is modified again.  In other words, the $valid state always lags one state behind.</p>
  
  <p>More specifically, I'm using the Angular Stripe helper library made available by backlift.com.  Here's the code block I'm referring to: <a href="https://github.com/laurihy/angular-payments/blob/master/lib/angular-payments.js#L613" rel="nofollow">Line 613 here.</a></p>
  
  <p>On view, I have div blocks as such:</p>
  
  <pre><code>&lt;div class="field-box error" ng-show="myForm.field.$dirty &amp;&amp; myForm.field.$invalid"&gt;
      &lt;div class="alert-msg"&gt;&lt;i class="icon-remove-sign"&gt;&lt;/i&gt; Some friendly message&lt;/div&gt;
  &lt;/div&gt;
  </code></pre>
  
  <p>Any idea why $valid/$invalid properties are not updated as soon as the on-blur event is executed? FYI, the _validate method does its job correctly and $setValidity() is called with the correct values when expected.</p>
  
  <p>Thanks in advance.</p>