【发布时间】:2015-08-23 17:44:42
【问题描述】:
我有两个指令,比如说:
angular.module('app').directive('directiveA', directiveA);
function directiveA(){
return {
restrict: 'E',
transclude: true,
scope: {},
templateUrl: 'directiveA.html',
controller: function($scope){
$scope.test="test data";
}
};
}
第二个:
angular.module('app').directive('directiveB', directiveB);
function directiveB(){
return {
restrict: 'E',
require: '^directiveA',
transclude: true,
scope: {},
templateUrl: 'directiveB.html',
link: function(scope, elem, attrs, directiveAController) {
console.log("directiveB linked");
}
};
}
directiveA 的 HTML:
<div>
<!-- something here -->
<div ng-transclude></div>
</div>
指令 B 的 HTML:
<div>{{test}}</div>
我想像这样使用它们:
<directive-a>
<directive-b></directive-b>
</directive-a>
如何使用 require 和 ng-transclude 让它们相互通信并渲染两个模板?例如,我想从directiveB 模板中的directiveA 打印测试变量。我是指令和嵌入的新手。
【问题讨论】:
-
你的指令元素应该是
<directive-a> <directive-b></directive-b> </directive-a> -
为什么不直接将
<directive-b>调用到<directive-a>模板中?
标签: javascript angularjs angularjs-directive transclusion angularjs-ng-transclude