指令继承和互操作性
Angular js 指令可以嵌套或可互操作。
在这个例子中,指令 Adir 向指令 Bdir 公开它的控制器$ scope,因为 Bdir 需要 Adir。
angular.module('myApp',[]).directive('Adir', function () {
return {
restrict: 'AE',
controller: ['$scope', function ($scope) {
$scope.logFn = function (val) {
console.log(val);
}
}]
}
})
确保设置 require:’^ Adir’(查看角度文档,某些版本不需要^字符)。
.directive('Bdir', function () {
return {
restrict: 'AE',
require: '^Adir', // Bdir require Adir
link: function (scope, elem, attr, Parent) {
// Parent is Adir but can be an array of required directives.
elem.on('click', function ($event) {
Parent.logFn("Hello!"); // will log "Hello! at parent dir scope
scope.$apply(); // apply to parent scope.
});
}
}
}]);
你可以通过以下方式嵌套指令:
<div a-dir><span b-dir></span></div>
<a-dir><b-dir></b-dir> </a-dir>
不要求指令嵌套在 HTML 中。