父子組件傳值
requirement.png
需求:
- 父組件請求接口獲取初始數(shù)據(jù)data
- 通過binding(<)單向傳遞給子組件
- 子組件在click事件后件余,發(fā)送廣播涡尘,通知父組件更新data
- 子組件實時更新
坑:
子組件在初始化時笤妙,在控制器中互拾,用新的變量代替?zhèn)鬟f的字段
// data為通過binding傳遞的字段
this.childData = this.data.childData
在子組件的template中使用childData
<div>{{$ctrl.childData}}</div>
此時會有兩個問題:
- this.childData 在組件初始化之后血巍,延時500ms左右才真正有值世蔗。
- 不會實時更新
現(xiàn)象歸納
通過binding綁定的data
- 在template中通過
$ctrl.data
可以立即獲取到端逼; - 在controller中通過
this.data
不能立即獲取到,會有延時污淋。
解決方案
- 建議直接在template中使用
$ctrl.data
方式顶滩。 - 變化監(jiān)聽
如果必須在controller中使用this.data
方式,可通過變化監(jiān)聽函數(shù)$.onChanges()實現(xiàn)寸爆。