title: ngChange in custom directive fire twice
body: <p>Attached custom directive that let using ng-change as attribute.</p>
  
  <p>The problem is, when I using it twice in the same view, I notice that bar method fire twice, I found the problem that the <code>$viewChangeListeners</code> store the same method of the controller twice. Note: notice that maybe I've the same directive twice with two different ng-change methods</p>
  
  <p>Have any one any idea to get over this problem?</p>
  
  <p>HTML: </p>
  
  <pre><code>&lt;my-directive ng-model="foo"  items="items" ng-change="bar1(foo)"&gt;&lt;/my-directive&gt;
  &lt;my-directive ng-model="foo2" items="items" ng-change="bar2(foo2)"&gt;&lt;/my-directive&gt;
  </code></pre>
  
  <p>Directive:</p>
  
  <pre><code>template: '&lt;div ng-repeat="item in items" ng-click="updateModel(item)"&gt;{{item}}&lt;/div&gt;',
  require: "ngModel",
  scope : {
    items : "="
  },
  link: function(scope, element, attrs, ctrl){
    scope.updateModel = function(item)
    {
      ctrl.$setViewValue(item);
    }
    ctrl.$viewChangeListeners.push(function() {
      scope.$eval(attrs.ngChange);
    });
  }
  </code></pre>
  
  <p><a href="http://plnkr.co/edit/uKwSJTtZMqBZPju0PANL?p=preview" rel="nofollow">plunkr sample</a></p>
  
  <p>Try this one, click on the up (1), then click on the down (1), then click on the up (1). The events fires as following: bar1, bar2, bar1, bar2</p>