Я нашел довольно странное поведение типа scope: true для внутреннего содержимого директивы:
<body ng-init="x=10">
<mydir>
{{x}}
</mydir>
</body>
поэтому {{x}} является внутренним контентом, а определение директивы:
.directive('mydir', function() {
return {
scope: {},
link: function(scope){
scope.x = 5;
}
};
});
Когда мы определяем область как изолированную (область: {}), она выводит {{x}} как 10, поэтому использует внешнюю область. Но когда мы создаем новую область действия для директивы ( scope: true), она будет использовать ее для внутреннего контента и вывода 5. Таким образом, для внутреннего содержимого для разных случаев используется несколько областей для внутреннего содержимого. Может ли кто-нибудь дать мне подсказку/ссылку на код/руководство для объяснения этой непоследовательности?
Здесь plnk играть с кодом.
UPD. Я понимаю, что такое наследование прототипа JavaScript. Я знаю разницу между типами областей действия. И моя цель - не отображать 5 вместо 10. Вопрос касается внутреннего шаблона, который в обоих случаях должен быть интерполирован с родительской областью, которая не имеет доступа к свойствам дочернего/изолированного.