title: How to update ngModel's $modelValue based on the $viewValue update by user input
body: <p>Say I have the following directive:</p>
  
  <pre><code>myApp.directive('myDirective', function() {
      return {
          restrict: 'A',
          require: 'ngModel',
          scope: {
              ngModel: '='
          },
          link: function(scope, elem, attrs, ngModelCtrl) {
              scope.$watch('ngModel', function() {
                  ngModelCtrl.$modelValue = 'foo';
              });
          }
      }
  }); 
  </code></pre>
  
  <p>And the following html:</p>
  
  <pre><code>&lt;input ng-model="name" my-directive&gt;&lt;/input&gt;
  </code></pre>
  
  <p>Basically, whenever the user changes the input, <code>my-directive</code> would ideally change the internal model value to "foo" while leaving the view value untouched. </p>
  
  <p>But when I print out <code>$scope.name</code> in the corresponding controller, it doesn't log "foo", it logs whatever the user entered in.</p>
  
  <p>It would seem that <code>ngModelCtrl.$modelValue</code> is not what the controller is accessing -- am I approaching this problem incorrectly? </p>
  
  <p>(Also watching the <code>ngModel</code> in the scope feels really wrong, but I'm not sure of any other way. Any suggestions would be much appreciated!)</p>