CNode

Angular 兄弟组件怎么通信

问答
Jjackhu发布于11 年前最后回复11 年前9 回复10978 浏览0 收藏

刚用 Angular,有些不太会的地方,特来请教。 下面两个自定义组件

<div class="container">
  <div class="col-lg-12">
    <gh-visualization val="relationships"></gh-visualization>
  </div>
  <div class="col-lg-12">
    <gh-form val="infoNode"></gh-form>
  </div>
</div>

我在 gh-visualization 中绑定了点击事件,当 gh-visualization 被点击之后,我希望 gh-form 中的 value 会随着点击区域的值变化而变化,有没有可以实现的方法,或者思路,又或者我对这个地方的理解有问题?

查看回复

回复 (9)

R
russj#1·11 年前

不是在一个 $scope 么,要怎么通信?直接不可以用?

H
Hanggi#2·11 年前

没错的话,你要用一个指令,包住两个指令,这样这两指令就会变成同一个指令的子指令,通过父指令通讯。

J
jackhu#3·11 年前

其实是我自己没理解 angular。问题没描述情况。 我在子组件改动了数据之后,父组件不知道子组件的数据变动,需要自己在子组件手动通知。

A
alaaf#4·11 年前
  1. 兄弟之间的通信的话,最好把这些val弄进service,service在一个兄弟里被改变,在另个一个兄弟里$watch service里的值。
  2. 父子通信的话,子-》父 是$emit, 父-》子 是$broadcast.
  3. ng-repeat 里子-》父 会复杂一些,$emit后 父组件需要counting是否所有子都已经完成。 不过把数据写到service里比写到template里要方便。
C
chapgaga#6·11 年前

angularjs中自定义了多少标签啊?

Z
zhenkunou#7·11 年前

可以给第一个指令A加个 itemClick:'&' 回调参数 A中执行的时候带上数据:itemClick({data:value}) 然后父scope就能拿到A的value更新第二个指令B的infoNode

J
jackhu#8·11 年前
引用 russj@jackhu 手动通知?你指 $digest 么?

@russj 对的,就是这个。 我问问题的时候刚学 angular ,连问题都没找到,所以提问描述的时候都是错的。

参与回复
登录后即可参与回复。登录