angular 1.5.8 項(xiàng)目回顧

父子組件傳值


requirement.png

需求

  • 父組件請(qǐng)求接口獲取初始數(shù)據(jù)data
  • 通過(guò)binding(<)單向傳遞給子組件
  • 子組件在click事件后,發(fā)送廣播,通知父組件更新data
  • 子組件實(shí)時(shí)更新


子組件在初始化時(shí),在控制器中,用新的變量代替?zhèn)鬟f的字段

// data為通過(guò)binding傳遞的字段
this.childData = this.data.childData

在子組件的template中使用childData

<div>{{$ctrl.childData}}</div>

此時(shí)會(huì)有兩個(gè)問(wèn)題:

  1. this.childData 在組件初始化之后,延時(shí)500ms左右才真正有值。
  2. 不會(huì)實(shí)時(shí)更新

現(xiàn)象歸納

通過(guò)binding綁定的data

  • 在template中通過(guò)$ctrl.data可以立即獲取到;
  • 在controller中通過(guò)this.data不能立即獲取到,會(huì)有延時(shí)。

解決方案

  • 建議直接在template中使用$ctrl.data方式。
  • 變化監(jiān)聽(tīng)
    如果必須在controller中使用this.data方式,可通過(guò)變化監(jiān)聽(tīng)函數(shù)$.onChanges()實(shí)現(xiàn)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容