AngularJS:
采用“臟值檢測”的方式,數(shù)據(jù)發(fā)生變更后,對于所有的數(shù)據(jù)和視圖的綁定關(guān)系進(jìn)行一次檢測,識別是否有數(shù)據(jù)發(fā)生了改變,有變化進(jìn)行處理,可能進(jìn)一步引發(fā)其他數(shù)據(jù)的改變,所以這個過程可能會循環(huán)幾次,一直到不再有數(shù)據(jù)變化發(fā)生后,將變更的數(shù)據(jù)發(fā)送到視圖,更新頁面展現(xiàn)。如果是手動對 ViewModel 的數(shù)據(jù)進(jìn)行變更,為確保變更同步到視圖,需要手動觸發(fā)一次“臟值檢測”。
VueJS:
采用的是數(shù)據(jù)劫持與發(fā)布訂閱相結(jié)合的方式實現(xiàn)雙向綁定,數(shù)據(jù)劫持主要通過Object.defineProperty來實現(xiàn),監(jiān)控對數(shù)據(jù)的操作,從而可以自動觸發(fā)數(shù)據(jù)同步。并且,由于是在不同的數(shù)據(jù)上觸發(fā)同步,可以精確的將變更發(fā)送給綁定的視圖,而不是對所有的數(shù)據(jù)都執(zhí)行一次檢測。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com