有這樣一段html
>
welcomeh1
>
>
積分:}h2
>
>
使用者名稱:}h1
>
>
積分:}h2
>
1、改造data物件中的屬性,並通過訪問器屬性對每個變數進行保護
var data =
2、遍歷真實dom樹,並建立虛擬dom樹->乙個陣列,記錄可能會發生改變的元素
3、當元素發生改變時,通知虛擬dom樹,虛擬dom樹對比變化,將變化的值修改到真實dom樹上
var data =/*
* 改造data為訪問器屬性
*///獲取data裡的全部屬性名
var keys = object.
keys
(data)
console.
log(keys)
//array['uanme','score']
//遍歷data中每個屬性
for(
var key of keys)
,//用乙個和當前屬性同名的訪問器屬性,代替data中原普通屬性
[key]:}`
]}//return this['_uname']
set(value)`]
= value // this['_uname']=value
//發出通知給虛擬dom樹
change
(key)
} enumerable:
true}}
)})(key)}/
** 構建虛擬dom樹
*///準備陣列儲存所有可能受影響的元素
var arr =
// 建立虛擬dom樹
function
getchildren
(parent)
else
}包裹的變數,就新增進虛擬dom樹
if(c.innerhtml ==
`}}`))
//首次填充頁面內容
c.innerhtml = data[key]}}
}}}// 遍歷body
getchildren
(document.body)/*
* 通知函式
*/function
change
(key)
}}`)}}
object.
seal
(data)
vue的屬性繫結和雙向資料繫結
屬性繫結 v bind屬性繫結,使用如下,為div繫結了乙個title屬性 dell lee title hello world div v bind 可以縮寫為 dell lee title hello world div 雙向資料繫結 v model一般用於input等表單元素,例項裡的資料改變...
vue中v model使用計算屬性,雙向繫結失效
在vue中v model繫結了乙個值到val中,用到了計算屬性監測val的變化,但是使用了computed之後,v model的雙向繫結失效 輸入位址之後再輸入下面其他input值,位址值變為空,列印this.address為空 後來在計算屬性中加入get和set解決了雙向繫結問題 computed...
Vue 計算屬性,偵聽器的使用
偵聽器是用來檢測資料變化從而新增自己自定義邏輯的 這一點和計算屬性很相似,計算屬性一般作用於簡單的一些小邏輯 如果邏輯比較複雜可以使用偵聽器,注意的是偵聽器效能方面比不上計算屬性。watch偵聽器執行結果 改變偵聽器值 對於任何複雜邏輯,你都應當使用計算屬性。在乙個計算屬性裡可以完成各種複雜的邏輯,...