title: Angular programmatically add ngChange without attribute
body: <p>I'm trying to simulate the ng-change attribute in a directive without modifying the HTML (so without the ng-change property). </p>
  
  <p>Looking at angular source code of the <code>ngChange</code> directive, my directive works and looks like this : 
  (Basically in this directive, I need to <code>blur()</code> a <code>select</code> field when <code>model</code> <code>change</code>)</p>
  
  <pre><code>.directive('blurOnChangeFix', ['$timeout',
      function($timeout) {
          return {
              restrict: 'AEC',
              require: 'ngModel',
              link: function($scope, element, attr, ngModel) {
                      // automatically blur element on ngModel change
                      ngModel.$viewChangeListeners.push(function() {
                      $timeout(function() { // IE bug fix
                          $(element).blur();
                      }, 100);
                  });
              }
          };
      }
  ]);
  </code></pre>
  
  <p>applying it with :</p>
  
  <pre><code>&lt;select
      id="test"
      ng-options="option for option in ['test1', 'test2'] track by option"
      class="form-control"
      ng-model="form.test"
      ng-required="true"
      blur-on-change-fix
  &gt;&lt;/select&gt;
  </code></pre>
  
  <p>But Is it the right solution ? isn't there another way to do this ? What about  scope.change() ?</p>
  
  <p>Thanks</p>