Angularjs 指令作用域和继承

Angularjs 指令作用域和继承,angularjs,angularjs-scope,Angularjs,Angularjs Scope,有人能给我解释一下,为什么使用以下代码: <html ng-app="myApp"> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script> <body> <div ng-controller="myController"> {{message}} <div ng

有人能给我解释一下,为什么使用以下代码:

<html ng-app="myApp">
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>   

<body>
   <div ng-controller="myController"> 
       {{message}}
    <div ng-if=true>
        {{message}}
        <div outer   style="background:yellow;padding:20px">
            {{message}}    
        </div>
    </div>  

   </div>
<script>
   angular.module('myApp',[])
   .controller('myController', function ($scope,$rootScope){   
       $scope.message="Football game";
   })
   .directive('outer',  function() {
            return {  

               scope: {}, 
               link:{
                   post:function(scope,element){ 
                       scope.message="Basketball.game";                                           
                    }
               }
            }

    });
</script> 

</body>
</html>

{{message}}
{{message}}
{{message}}
angular.module('myApp',[])
.controller('myController',函数($scope,$rootScope){
$scope.message=“足球比赛”;
})
.directive('outer',function(){
返回{
作用域:{},
链接:{
职位:职能(范围、要素){
scope.message=“Basketball.game”;
}
}
}
});
我得到了{{message}}
足球比赛的所有实例
?我希望最后一个是
Basketball Game
,因为编译器首先在outer的指令范围内搜索,它可以找到名为
message
的属性,其中
Basketball Game
作为值。为什么它不使用这个呢


这是因为最后一条消息是在myController范围内评估的,而不是在指令范围内评估的。指令作用域未知,因为您使用
作用域:{}
创建了一个独立的作用域,如果设置
作用域:true
,它将按照您的想法执行,因为它将充当子作用域

使用隔离范围工作

{{message}}
{{message}}
{{message}}
angular.module('myApp',[])
.controller('myController',函数($scope,$rootScope){
$scope.message=“足球比赛”;
})
.directive('outer',function(){
返回{
作用域:{},
链接:{
职位:职能(范围、要素){
scope.message=“Basketball.game”;
}
},
模板:“这是指令{{message}}”,
}
});