最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

淺談Angular8+版本中雙向綁定的源碼實現(xiàn)思路

2023-04-23 15:27 作者:-Chr1sS-  | 我要投稿

????網(wǎng)絡上對于Angular的源碼解析少之又少,這是近年來國內(nèi)ng使用人群導致的生態(tài)衰落問題,與谷歌的擺爛也有著密切關(guān)系,故在此淺薄敘述下Angular8+版本中雙向綁定的源碼實現(xiàn)思路。

????核心函數(shù):ngModel

????ngModel的基本原理是會在構(gòu)建時根據(jù)指令所在元素的類型為其添加事件綁定,從而使數(shù)據(jù)雙向綁定生效。

? ? 而ngModel所使用的核心函數(shù)又分為為HostListener、HostBinding和ControlValueAccessor。?

????1、HostListener用于實現(xiàn)從UI元素向模型數(shù)據(jù)的綁定,即當UI元素發(fā)生某些指定事件時,該事件執(zhí)行特定的邏輯,從而更新模型數(shù)據(jù)。?

????2、HostBinding則用于實現(xiàn)從模型數(shù)據(jù)向UI元素的綁定,即將模型數(shù)據(jù)映射到UI元素的特定屬性上,從而實現(xiàn)數(shù)據(jù)與UI的雙向綁定。?

????3、ControlValueAccessor是一個接口,用于定義該指令如何與模型數(shù)據(jù)進行交互,包括寫入數(shù)據(jù)和讀取數(shù)據(jù)。?

????具體流程如下:?

1、當頁面渲染時,Angular會檢查每個指令所在元素的類型,并為其添加特定的事件綁定,從而使數(shù)據(jù)雙向綁定生效。?

2、當用戶在UI元素上進行操作時,事件會觸發(fā)并執(zhí)行特定的邏輯,從而更新模型數(shù)據(jù)。?

3、模型數(shù)據(jù)更新后,Angular會將其映射到UI元素的特定屬性上,從而實現(xiàn)數(shù)據(jù)與UI的雙向綁定。

4、當用戶對UI元素進行操作時,Angular會自動將其值傳遞給ControlValueAccessor接口的實現(xiàn)函數(shù),從而實現(xiàn)與模型數(shù)據(jù)的交互。

????ControlValueAccessor接口做了什么?

????實現(xiàn)表單控件與表單的雙向綁定。先看看ControlValueAccessor接口里實現(xiàn)哪些方法:

????export interface ControlValueAccessor {

??????writeValue(obj: any): void

??????registerOnChange(fn: any): void

??????registerOnTouched(fn: any): void

??????setDisabledState?(isDisabled: boolean): void

????}

????可以看到ControlValueAccessor接口中有4個方法:? ?

????1. writeValue(value: any): void —— 這個函數(shù)會把制定的值寫入自定義表單控件中。

????2. registerOnChange(fn: any): void —— 這個函數(shù)會在自定義表單控件的值發(fā)生變化時,調(diào)用指定的回調(diào)函數(shù)。?

????3. registerOnTouched(fn: any): void —— 這個函數(shù)會在自定義表單控件被觸摸時,調(diào)用指定的回調(diào)函數(shù)。

????4. setDisabledState(isDisabled: boolean): void —— 這個函數(shù)會將自定義表單控件設置為禁用或啟用狀態(tài)。



淺談Angular8+版本中雙向綁定的源碼實現(xiàn)思路的評論 (共 條)

分享到微博請遵守國家法律
永平县| 庆元县| 汝南县| 普安县| 长白| 大理市| 武夷山市| 临澧县| 凭祥市| 咸阳市| 吴桥县| 连南| 永丰县| 尚志市| 万全县| 万山特区| 汉沽区| 勐海县| 涿州市| 弥勒县| 玛曲县| 苍南县| 哈巴河县| 增城市| 建瓯市| 香港| 沭阳县| 嘉义县| 株洲市| 平乐县| 龙川县| 莱阳市| 安康市| 雅江县| 遂平县| 湛江市| 安义县| 资中县| 苍山县| 嘉荫县| 临沭县|