国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

分享到微博請遵守國家法律
南靖县| 瓦房店市| 墨江| 革吉县| 宜宾县| 大邑县| 家居| 钟山县| 卢氏县| 满洲里市| 津南区| 平陆县| 岐山县| 鲜城| 合山市| 汤原县| 湟源县| 泾川县| 柯坪县| 囊谦县| 察隅县| 蛟河市| 合作市| 临沧市| 营口市| 年辖:市辖区| 中山市| 宜兴市| 阿拉善右旗| 海口市| 河津市| 高雄县| 临澧县| 浦县| 花莲市| 米林县| 杨浦区| 绥宁县| 吴江市| 鲁山县| 鞍山市|