控制器和指令变量的范围

时间:2016-11-16 09:19:41

标签: javascript angularjs angularjs-directive angularjs-scope

我是AngularJS的新手。我已经开始从基础知识中学习它,并开始做最简单的例子和​​自定义的例子。最近我发现了一些AngularJS的奇怪行为。

我有以下代码段:

angular.module('test', [])
	.controller('aCtrl', function($scope){})
	.controller('bCtrl', function($scope){
			$scope.message = 'Hello!';
	})
	.directive('b',function()
	{
		return {
			controller: 'bCtrl',
		};
	});
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
	<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,并绑定{{1到bCtrl。在b的{​​{1}}服务中,我们定义变量bCtrl并为其指定字符串$scope。在message代码中,您可以看到Hello!元素包含html和其中的两个body元素:一个带有ng-app="test"控制器,另一个带有{div 1}}指令。

上面的代码让我

aCtrl

根据我的理解,它不会产生任何结果,因为b Hello! 控制器中没有定义变量message

这是正常行为还是我错过了一些关于AngularJS控制器和指令的内容?

1 个答案:

答案 0 :(得分:0)

范围之间共享的指令取决于您在何处以及如何使用它。有不同类型的范围: - 共享,继承,隔离。我正在给你链接到我指的是什么。 Behavior of custom directives