我在一个模块中有两个指令。我想从A指令访问B指令。因为A指令应该使用B'范围。 指令:
angular.module('main').directive('ADirective', function () {
return {
restrict: 'EA',
templateUrl:'kk.html',
controller: function ($scope) {
$scope.usedParameter="test",
范围:真});
B指令:
angular.module('main').directive('BDirective', function () {
return {
restrict: 'EA',
templateUrl:'kk.html',
controller: function ($scope) {
//$scope.ascopeValue =
范围:真});
在html中,我喜欢这样使用:(b指令模板)
<div tab-view name="Main">
<div tab name="A">
<div class="panel-default">
<a-directive></a-directive>
</div>
</div>
如果我像这样注入b指令:
angular.module('main').directive('aDirective', [ 'bDirective', function (bDirective) {
未知提供商:错误即将来临。
答案 0 :(得分:0)
您无法注入指令。但是你想用这个指令做什么?如果他们共享相同的逻辑,您应该创建服务或工厂。如果你想在HTML中使用该指令,你不必注入它,你可以像使用它一样使用它,但不要注入任何东西。
修改强>
在这种情况下,您可以传递一个带有属性的变量:
angular.module('main').directive('BDirective', function () {
return {
restrict: 'EA',
templateUrl:'kk.html',
scope: {
passedAttribute= '='
},
controller: function ($scope) {
console.log($scope.passedAttribute);
你的a-directive的HTML:
<div tab-view name="Main">
<div tab name="A">
<div class="panel-default">
<b-directive passed-attribute="variableFromThisScope"></b-directive>
</div>
</div>
答案 1 :(得分:0)
如果您有兴趣在指令和指令所在的元素之间共享信息,则需要将该变量作为参数公开,并在scope
中定义。
例如:
angular.module('main').directive('ADirective', function () {
return {
restrict: 'EA',
templateUrl:'kk.html',
scope: {
usedParameter : '=ascopeValue'
},
controller: function ($scope) {
$scope.usedParameter="test",
});
<div tab-view name="Main">
<div tab name="A">
<div class="panel-default">
<a-directive ascopeValue="bscopeVariable"></a-directive>
</div>
</div>
</div>
定义范围变量时,您有3个选项:
@
绑定传入(插入)=
绑定传入的属性(双向绑定)&
绑定传入的函数(指令调用外部作用域中的函数)