title: Why NgModelController.$modelValue != $parse(attrs.ngModel)(scope)?
body: <p>Code: <a href="http://plnkr.co/edit/xPZM5E7tjYqlt5NIabIu?p=preview" rel="nofollow">http://plnkr.co/edit/xPZM5E7tjYqlt5NIabIu?p=preview</a> <strong>line-no:17</strong> </p>
  
  <p>In this code if I use <code>ctrl.$modelValue = nVal;</code> instead of                  <code>$parse(attrs.ngModel).assign(scope, nVal);</code> then it does not work. Can you please point-out the reason? </p>
  
  <pre><code>angModule.directive('moChangeProxy', function ($parse) {
      return {
          require:'^ngModel',
          restrict:'A',
          link:function (scope, elm, attrs, ctrl) {
              var proxyExp = attrs.moChangeProxy;            
              scope.$watch(proxyExp, function (nVal) {
                  if (nVal != ctrl.$modelValue) {
                      //ctrl.$modelValue = nVal;  // This does not work                  
                      $parse(attrs.ngModel).assign(scope, nVal); // This works well
                  }
              });
              elm.bind('blur', function () {
                  var proxyVal = scope.$eval(proxyExp);
                  if(ctrl.$modelValue != proxyVal) {
                      scope.$apply(function(){
                          $parse(proxyExp).assign(scope, ctrl.$modelValue);
                      });
                  }
              });
          }
      };
  });
  </code></pre>