AngularJS Transcluded指令的范围来自其他指令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AngularJS Transcluded指令的范围来自其他指令相关的知识,希望对你有一定的参考价值。

我得到了一个被转移的指令,例如'aDirective'和其他随机'bDirective'指令。我的任务是:我希望得到一个'aDirective的范围变量并在'bDirective'中捕获它。

angular.module('myApp',[])
  .controller('bDirective',['$scope',function(scope){

    scope.getScopeVar = function () {

    // here I want to get aDirective - s 'someVar' variable
    scope.someVar;

        debugger;
    };
    scope.getScopeVar();
  }])
  .directive('aDirective',function(){
    return{
    scope:{},
    transclude:true,
    template:'<div>123</div>',
    link: function(scope, element, attrs, controller, transclude){
      scope.someVar = 'asd';

      transclude(scope, function (clone) {
        element.append(clone);
      });
    }
    };
});

有解决方案吗关心尼克。

答案

嵌套指令应该是require the directive from the top。然后它可以接收它的控制器作为link函数参数(第4个)。

.directive('nestedDirective', function(){
 return {
   require: '^aDirective',
   link: function (scope, elements, attrs, aDirectiveController) {
     // access aDirectiveController's methods or properties
   }
 }
})

以上是关于AngularJS Transcluded指令的范围来自其他指令的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS 指令

05AngularJS 指令

AngularJs 指令

AngularJS 指令实践指南

JavaScript强化教程——AngularJS 指令

AngularJS中的指令