在父指令中访问子指令变量的值

Access value of a variable of child directive in parent directive

如何在父指令中访问子指令的变量? 我有一个父指令,如:

<parent-directive>
  <child-directive></child-directive>
</parent-directive>

子指令包含一个对象"states.visible" 我想在父指令中访问它。

我认为 AngularJs 方法可以通过在 child 指令中实现输出来完成。每次 "states" object 改变时 child 调用输出函数并且 parent 可以用它做任何它想做的事情。

AngularJS v1.5+ 方法:

HTML

<parent-directive>
  <child-directive on-state-change="$ctrl.stateChange($stateChangeObj)"></child-directive>
</parent-directive>

Child 控制器

    $scope.$watch('$ctrl.state', function(n, old){
        ctrl.onStateChange({$stateChangeObj: n});
    })

Parent 控制器

ctrl.stateChange = function(state){
    // do something
}

https://docs.angularjs.org/guide/component#component-based-application-architecture

Note: Component based architecture was introduced in AngularJS v1.5.


AngularJS v1.5 方法之前:

这在技术上应该与双向绑定函数相同。除了 html 看起来像这样

on-state-change="$ctrl.stateChange"

而不是

on-state-change="$ctrl.stateChange($stateChangeObj)"

。然后在 child 中它将是

ctrl.onStateChange(n);

而不是

 ctrl.onStateChange({stateChangeObj: n});