0

我是AngularJS的新手。我已經開始從基礎知識中學習,並開始做最簡單的例子和​​自定義的例子。最近我發現了AngularJS的一些奇怪的行爲。控制器和指令變量的作用域

我有下面的代碼片段:

angular.module('test', []) 
 
\t .controller('aCtrl', function($scope){}) 
 
\t .controller('bCtrl', function($scope){ 
 
\t \t \t $scope.message = 'Hello!'; 
 
\t }) 
 
\t .directive('b',function() 
 
\t { 
 
\t \t return { 
 
\t \t \t controller: 'bCtrl', 
 
\t \t }; 
 
\t });
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8" /> 
 
\t <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
\t <script type="text/javascript" src="src.js"></script> 
 
</head> 
 
<body ng-app="test"> 
 
    <div ng-controller="aCtrl"> 
 
     {{ message }} 
 
    </div> 
 
    <div b> 
 

 
    </div> 
 
</body> 
 
</html>

正如你可以看到在這個例子中,我們定義我們的模塊 - test,一個指令b和兩個控制器:aCtrlbCtrl,並將bCtrl綁定到b。在bCtrl$scope服務中,我們定義變量message並將字符串Hello!賦值給它。在html的代碼中,您可以看到body元素,其中ng-app="test"和其中的兩個div元素:一個是aCtrl控制器,另一個是b指令。

上述代碼產生我

Hello! 

時,據我所知,應該沒有產生,因爲在aCtrl控制器的$scope沒有定義的變量message

這是正常行爲還是我缺少AngularJS控制器和指令的一些東西?

+0

aCtrl不產生任何輸出你好!來自指令 – Pravin

回答

0

指令在作用域之間共享取決於你在哪裏以及如何使用它。有不同種類的範圍: - 共享,繼承,隔離。我給你的鏈接是我所指的。 Behavior of custom directives

相關問題