title: Why does my nested directive disconnect from its ngModel as soon as $setViewValue() is called?
body: <p><a href="http://plnkr.co/edit/e16drDlQoAzTweQehyHN?p=preview" rel="nofollow">Plunker here.</a></p>
  
  <p>I have a directive ("child") nested inside another directive ("parent"). It <code>require</code>s ngModel, and <code>ngModelCtrl.$modelValue</code> is shown and kept up-to-date just fine in its template. That is, until I call ngModelCtrl.$setViewValue().</p>
  
  <p>So here is the HTML initialising the directives:</p>
  
  <pre><code>&lt;div parent&gt;
    &lt;div child ng-model="content"&gt;Some&lt;/div&gt;
  &lt;/div&gt;
  </code></pre>
  
  <p>And here are the directives:</p>
  
  <pre><code>angular.module('form-example2', [])
    .controller('MainCtrl', function($scope){
    $scope.content = 'Hi';
  })
  .directive('parent', function() {
    return {
      transclude: true,
      template: '&lt;div ng-transclude&gt;&lt;/div&gt;',
      controller: function(){
      },
      scope: {}
    };
  })
  .directive('child', function() {
    return {
      require: ['ngModel', '^parent'],
      transclude: true,
      template: '&lt;div&gt;Model: {{model.$modelValue}} (&lt;a style="text-decoration: underline; cursor: pointer;" ng-click="alter()"&gt;Alter&lt;/a&gt;)&lt;br /&gt;Contents: &lt;div style="background: grey" ng-transclude&gt;&lt;/div&gt;&lt;/div&gt;',
      scope: {},
      link: function(scope, elm, attrs, ctrl) {
        var ngModelCtrl = ctrl[0];
        var parentCtrl = ctrl[1];
  
        scope.model = ngModelCtrl;
  
        // view -&gt; model
        scope.alter = function(){
          ngModelCtrl.$setViewValue('Hi2');
        }
  
        // model -&gt; view
  
        // load init value from DOM
      }
    };
  });
  </code></pre>
  
  <p>When the model (i.e. <code>content</code>) changes, this change can be seen inside the child directive. When you click the "Alter" link (which triggers a call of $setViewValue()), the model's value should become "Hi2". This is correctly displayed inside the <code>child</code> directive, but not in the model outside the directive. Furthermore, when I <em>now</em> update the model outside the directive, it is no longer updated inside the directive.</p>
  
  <p>How come?</p>