如果您设置require: "^directive1",
指令 2 必须在指令 1 中:
<div directive1>
<div directive2></div>
</div>
您还可以使用“?directive1”,使其成为可选。
简单地说:有两种类型的控制器:指令控制器和普通控制器。
使用控制器,您可以在将在视图中更新的范围内设置值。这是一个带有一个控制器和两个指令的 plunkr:http: //plnkr.co/edit/IicvQfuv8LMOb4iVQen5
var app = angular.module('plunker', []);
app.directive('directive1', function() {
return {
restrict: 'A',
replace: true,
template: '<span>{{bar}}</span>'
}
});
app.directive('directive2', function() {
return {
restrict: 'A',
replace: true,
template: '<b>{{bar}}</b>'
}
});
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
$scope.foo ="layla";
$scope.bar ="hello";
});
和html:
<body ng-controller="MainCtrl">
this is directive1: <div directive1>{{foo}}</div>.
<br />
this is directive2: <div directive2>{{foo}}</div>.
Hello {{name}}!
</body>
请注意,指令是您的浏览器可以解析的新元素。它们是您在 app.directive() 部分中定义的 HTML 的扩展。
当 AngularJS 找到{{foo}}
它时,它会将它绑定到一个范围,该范围可以使用有权访问该范围的更近的控制器进行修改。在这种情况下,MainCtrl。您也可以将 MainCtrl 放在<div ng-controller="MainCtrl">...</div>
使用您的代码,您将找不到控制器,因为它正在向上查找名为directive1Ctrl 的控制器,但从未发生过。