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

歡迎光臨散文網(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)思路的評論 (共 條)

分享到微博請遵守國家法律
大兴区| 醴陵市| 冕宁县| 赫章县| 卢湾区| 陵川县| 临邑县| 广宁县| 甘孜| 忻城县| 庆元县| 福州市| 鹤庆县| 米林县| 高碑店市| 大名县| 海伦市| 蓝山县| 辽阳县| 甘南县| 秭归县| 金门县| 武鸣县| 潮州市| 青浦区| 三明市| 莆田市| 宁海县| 尤溪县| 武川县| 礼泉县| 太湖县| 凯里市| 南靖县| 南岸区| 山东| 营山县| 辽中县| 中卫市| 信宜市| 汉中市|