繁体   English   中英

AngularJS隔离范围如何添加到正确的父范围?

[英]AngularJS isolate scope how to add to correct parent scope?

我有一个指令“ outerDirective”,它具有作为指令的子代,并且具有作为指令的子代。 如何将孙子指令范围添加到正确的子指令范围? 我希望这是有道理的。 这是显示代码的小提琴。 看来我需要在子指令而不是控制器实例中与作用域方法进行通信。 http://jsfiddle.net/hcabnettek/DMhUL/ html就是这样

<div class="my-outer-directive">

    <div class="my-inner-directive" id="foo1">

        <div class="my-inner-inner-directive"></div>
        <div class="my-inner-inner-directive"></div>
    </div>
    <div class="my-inner-directive" id="foo2"></div>
    <div class="my-inner-directive" id="foo3">
       <div class="my-inner-inner-directive"></div>
       <div class="my-inner-inner-directive"></div>
       <div class="my-inner-inner-directive"></div>
       <div class="my-inner-inner-directive"></div>
   </div>

我期望foo1范围具有一个具有2个范围的subscriptions属性foo2范围,具有0个范围的subscription属性以及foo3具有4个范围的subscription属性。 我相信它们都已添加到单例控制器实例中。 如何将内部-内部指令链接到适当的范围。 像嵌套的手风琴一样。 任何帮助都会很棒。

子指令与父指令至少有两种通信方式:

使用指令配置对象上的require属性来访问子级内部的父指令控制器,如下所示:

.directive('parent', function() {

  return {
    controller: function() {  
      this.parentFn() {
        //do stuff.
      }
    } 
  }
})

.directive('child', function() {

  return {
    require: '^parent',
    link: function(scope, element, attrs, parentCtrl) {
        parentCtrl.parentFn(); //this will execute the parent function here
    }
  }
});

或者,将函数传递给模板中的child指令,如下所示

<child parent-fn=parentFn()></child>

.directive('child', function() {

  return {
    scope: {
      parentFn: '&' // this function is now available on child's scope
    }
  }
});

这样,不是直接访问其子级的父级,而是能够访问某些父级方法的子级,希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM