У меня есть текстовое поле в контроллере, который привязан к модели name. Там есть директива внутри контроллера и есть еще одно текстовое поле внутри директивы, которое привязано к той же модели name:
<div class="border" ng-controller="editCtrl">
   Controller: editCtrl <br/>
   <input type="text" ng-model="name" />
   <br/>
   <tabs>
      Directive: tabs <br/>
      <input type="text" ng-model="name"/>
   </tabs>
</div>
mod.directive('tabs', function() {
  return {
    restrict: 'E',
    transclude: true, 
    template:
      '<div class="border" ng-transclude></div>',
  };
});
Когда вы вводите что-то во внешнем текстовом поле, оно отображается во внутреннем текстовом поле, но если вы вводите что-то во внутреннем текстовом поле, оно перестает работать, то есть оба текстовых поля больше не отражают одно и то же значение.
См. пример: http://jsfiddle.net/uzairfarooq/MNBLd/
Я также попытался использовать двухстороннюю привязку attr (scope: {name: '='}), но она дает синтаксическую ошибку. И использование scope: {name: '@'} имеет тот же эффект.
Любая помощь будет принята с благодарностью.
В дополнение к принятому ответу эта статья действительно помогла мне понять прототипическое наследование в дочерних блоках. Я настоятельно рекомендую всем, у кого проблемы с областями, прочитать его полностью.


