在onpush策略下,angular不會執行變化檢測(change detection ),除非元件的input
接收到了新值。接收到新值的意思是,input
的值或者引用發生了變化。這樣聽起來不好理解,看例子:
子元件接收乙個balls
(別想歪:))輸入,然後在模板遍歷這個balls
陣列並展示出來。初始化2秒後,往balls
陣列push乙個new ball
:
@component(}
`})export class ballslist implements oninit,2000)
}}
注意:因為滑鼠鍵盤事件會觸發變化檢測,所以這裡使用定時器!
現在是不使用onpush策略的情況。2秒後,new ball就被新增到檢視中了。
當使用onpush變化檢測策略的時候,new ball並不會被新增到檢視中:
@component(}
`,changedetection: changedetectionstrategy.onpush
})export class ballslist implements oninit,2000)
}}
但是,如果在父元件改變input
的值,檢視是會更新的,因為這樣angular會執行變化檢測:
@component()
balls: any = ['basketball','football'];
ngoninit(){}
changeref()
}這樣就相當於改變了balls
的引用。
但是,如果不改變balls
的引用,只給它push乙個值,檢視是不會更新的:
@component()
balls: any = ['basketball','football'];
ngoninit(){}
addball(ball)
}這時如果有需要,我們可以用changedetectorref.detectchanges()
手動觸發變化檢測。
這樣解釋應該很清楚了!
變化的職場,變化的你
1月8日 時不時能夠聽到候選人或周圍人的抱怨 我太不喜歡這個環境 公司 了,政策又變了 也許他在希望,公司應該給人長期穩定的感覺,他不喜歡不確定。因為在不確定的時候,他可能就是 無辜受害者。我的建議是他應該把頭四周轉一下,看看周圍的情況。現實是一切都在變,他的希望是個不切實際的奢望。變化的根源當然是...
變化的職場,變化的你
1月8日 時不時能夠聽到候選人或周圍人的抱怨 我太不喜歡這個環境 公司 了,政策又變了 也許他在希望,公司應該給人長期穩定的感覺,他不喜歡不確定。因為在不確定的時候,他可能就是 無辜受害者。我的建議是他應該把頭四周轉一下,看看周圍的情況。現實是一切都在變,他的希望是個不切實際的奢望。變化的根源當然是...
需求在變化,思維在變化
做了這個遠端監控專案,發現開發專案其實相當具有挑戰性的,這種挑戰性主要表現在兩個方面 1 不斷變化的領導需求 或者客戶需求 2 並不熟練甚至並不了解的技術。最近看了一些 瘋狂的程式設計師 還是很羨慕絕影能在大學期間找到自己喜歡的方向,喜歡的事情,把自己喜歡的事情作為自己的工作甚至事業實際上是非常快樂...