Javascript angular 1.5中的组件通信

Javascript angular 1.5中的组件通信,javascript,angularjs,angularjs-directive,custom-component,Javascript,Angularjs,Angularjs Directive,Custom Component,Angular 1.5组件通信建议通常有输出绑定来调用根控制器上的方法 假设我有一个根组件和两个子组件 <root> <child-1></child-1> <child-2></child-2> </root> 它希望通过读取组件2上的值,然后在根目录中执行某些操作来对组件1上的按钮单击做出反应 例如,child-1是一个指令,用于包装图形库,该图形库将图形附着到其DOM节点,并具有一个变量来控制该图

Angular 1.5组件通信建议通常有输出绑定来调用根控制器上的方法

假设我有一个根组件和两个子组件

<root>
    <child-1></child-1>
    <child-2></child-2>
</root>

它希望通过读取组件2上的值,然后在根目录中执行某些操作来对组件1上的按钮单击做出反应

例如,
child-1
是一个指令,用于包装图形库,该图形库将图形附着到其DOM节点,并具有一个变量来控制该图形

child-2
有一个按钮。单击时,来自
child-1
变量的数据应传递给root,root对其进行处理

具体来说,
child-1
wrapps
var graph2d=new vis.graph2d(容器、数据集、选项)。稍后,我想从
graph2d
中检索一些信息,并将其传递到
root
以对其进行处理


这归结为:组件如何对其他组件发出的事件作出反应?输入和输出建议似乎不包括该场景。

在angular 1.5中,您可以使用require和/或属性绑定(输入/输出)进行通信

如果使用require属性,则根组件将发布api,子组件将获得对控制器的引用:

angular.module('app').component('child1', {
   bindings: {},
   require: {api: '^root'}, //your <root> component
   template: '',
   controller: controller
});
这是根组件控制器功能:

$ctrl.addWatchedBook = addWatchedBook;

function addWatchedBook(bookName){

  booksWatched.push(bookName);

}

下面是一个完整的架构概述

使用双向绑定并将数据注入两个组件:
child-1控制器child-2
@zeroplagl基本上,我想问的是,在一个组件需要对另一个组件的事件做出反应的情况下,两个不相交的组件如何与输入和输出进行通信。您可以在更高级别的组件上保持状态,也可以使用$rootScope在组件之间进行通信。$broadcast据我所知,根组件保存相关数据(或至少可以访问),child-2组件触发根组件响应的事件。当子组件需要响应异步请求时,使用
require
是否被认为是最佳方法?即,编辑表单组件通过
&
绑定将其保存方法委托给父组件,但需要对服务器错误/成功回调作出反应rom父级?我觉得这不是一个好方法,因为子级知道父级组件。它应该是相反的。子级应该只通过与父级/容器组件绑定的
&
绑定来发出事件/函数。
$ctrl.addWatchedBook = addWatchedBook;

function addWatchedBook(bookName){

  booksWatched.push(bookName);

}