Angular 兄弟组件怎么通信
刚用 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。问题没描述情况。 我在子组件改动了数据之后,父组件不知道子组件的数据变动,需要自己在子组件手动通知。
- 兄弟之间的通信的话,最好把这些val弄进service,service在一个兄弟里被改变,在另个一个兄弟里$watch service里的值。
- 父子通信的话,子-》父 是$emit, 父-》子 是$broadcast.
- ng-repeat 里子-》父 会复杂一些,$emit后 父组件需要counting是否所有子都已经完成。 不过把数据写到service里比写到template里要方便。
@jackhu 手动通知?你指 $digest 么?
angularjs中自定义了多少标签啊?
可以给第一个指令A加个 itemClick:’&’ 回调参数 A中执行的时候带上数据:itemClick({data:value}) 然后父scope就能拿到A的value更新第二个指令B的infoNode
@russj 对的,就是这个。 我问问题的时候刚学 angular ,连问题都没找到,所以提问描述的时候都是错的。
@alaaf 谢谢 我问问题的时候刚学 angular ,连问题都没找到,所以提问描述的时候都是错的。