次の点を考慮してください。
HTML
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.min.js"></script>
<meta charset=utf-8 />
<title>Exploring directives</title>
</head>
<body>
<my-directive>
Some text
</my-directive>
{{Info.Version}}
<script type="text/ng-template" id='my-directive.html'>
<div>Hello, {{Info.Version}}</div>
</script>
</body>
</html>
JS
var app = angular.module('myApp', []);
app.run(function($rootScope) {
$rootScope.Info = {};
$rootScope.Info.Name = 'rootScope';
$rootScope.Info.Version = '1.0.0.1';
});
app.directive('myDirective', function() {
return {
restrict: 'E',
templateUrl: 'my-directive.html',
scope: false
};
});
バタラン
私が見たところ、$rootScope は表示されません (ただし、表示されていた場合はScope (001)というラベルが付けられると思います)。
JSでスコープを true に変更すると:
app.directive('myDirective', function() {
return {
restrict: 'E',
templateUrl: 'my-directive.html',
scope: true
};
});
$ rootScopeがScope (002)にプッシュされているようです:
誰かが何が起こっているのか説明してもらえますか? $rootScope が押し下げられているように見えるのはなぜですか? その上には何がありますか?ここに jsbin リンクがあります: http://jsbin.com/udALigA/1/