Angular 兄弟组件怎么通信
发布于 10 年前 作者 jackhu 9874 次浏览 最后一次编辑是 8 年前 来自 问答

刚用 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 回复

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

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

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

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

@jackhu 手动通知?你指 $digest 么?

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

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

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

@alaaf 谢谢 我问问题的时候刚学 angular ,连问题都没找到,所以提问描述的时候都是错的。

回到顶部