本章來(lái)源于https://angular.cn/guide/template-syntax
要想理解 Angular 綁定如何工作,重點(diǎn)需先搞清 HTML attribute 和 DOM property 之間的區(qū)別鞍帝。
attribute是由HTML定義的浩销,而property是由DOM定義的盆偿。
? ? ●? 少量 HTML attribute 和 property 之間有著 1:1 的映射汉矿,如?id拜隧。
? ? ●? 有些 HTML attribute 沒(méi)有對(duì)應(yīng)的 property呻此,如?colspan轮纫。
? ? ●? 有些 DOM property 沒(méi)有對(duì)應(yīng)的 attribute,如?textContent焚鲜。
? ? ●? 大量 HTML attribute 看起來(lái)映射到了 property…… 但卻不像你想的那樣掌唾!
attribute初始化DOM property放前,然后他們的任務(wù)就完成了。property值是可以改變的郑兴,而attribute的值是不能變化的犀斋。
例如,當(dāng)瀏覽器渲染<input type="text" value="Bob">時(shí)情连,它將創(chuàng)建相應(yīng) DOM 節(jié)點(diǎn)叽粹, 它的?value?這個(gè) property 被初始化為?“Bob”。
當(dāng)在輸入框修改輸入值時(shí)却舀,DOM 元素的?value?這個(gè)?property?變成了 “Sally”虫几。 但是該 HTML 的?value?這個(gè)?attribute?保持不變。
HTML 的?value?這個(gè) attribute 指定了初始值挽拔;DOM 的?value?這個(gè) property 是當(dāng)前值辆脸。
disabled?這個(gè) attribute 是另一種特例。按鈕的?disabled?這個(gè)?property?是?false螃诅,因?yàn)槟J(rèn)情況下按鈕是可用的啡氢。 當(dāng)你添加?disabled?這個(gè)?attribute?時(shí),只要它出現(xiàn)了按鈕的?disabled?這個(gè)?property?就初始化為?true术裸,于是按鈕就被禁用了倘是。
添加或刪除?disabled?這個(gè)?attribute?會(huì)禁用或啟用這個(gè)按鈕。但?attribute?的值無(wú)關(guān)緊要袭艺,這就是你為什么沒(méi)法通過(guò) <button disabled="false">仍被禁用</button>仍被禁用?這種寫(xiě)法來(lái)啟用按鈕搀崭。
設(shè)置按鈕的?disabled?這個(gè)?property(如,通過(guò) Angular 綁定)可以禁用或啟用這個(gè)按鈕猾编。 這就是?property?的價(jià)值瘤睹。
就算名字相同,HTML attribute 和 DOM property 也不是同一樣?xùn)|西答倡。