怎麼理解vue的資料雙向繫結
阿新 • • 發佈:2019-01-01
單向資料繫結
指的是我們先把模板寫好,然後把模板和資料(資料可能來自後臺)整合到一起形成HTML程式碼,然後把這段HTML程式碼插入到文件流裡面。
單向資料繫結缺點:HTML程式碼一旦生成完以後,就沒有辦法再變了,如果有新的資料來了,那就必須把之前的HTML程式碼去掉,再重新把新的資料和模板一起整合後插入到文件流中。 簡單的來說就是DOM操作直接改變
資料資料雙向
資料模型(Module)和檢視(View)之間的雙向繫結。
使用者在檢視上的修改會自動同步到資料模型中去,同樣的,如果資料模型中的值發生了變化,也會立刻同步到檢視中去。雙向資料繫結的優點是無需進行和單向資料繫結的那CRUD(Create,Retrieve,Update,Delete)操作雙向資料繫結最經常的應用場景就是表單了,這樣當用戶在前端頁面完成輸入後,不用任何操作,我們就已經拿到了使用者的資料存放到資料模型中了。
如何使用js達到雙向資料繫結
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="text" id="userName">
<br>
<span id ="uName"></span>
<script>
var obj={
pwd:"1234"
};
//主要使用到了get和set方法,最為關鍵
Object.defineProperty(obj,"userName",{
get:function(){
console.log('get init');
},
set:function(val){
console.log("set init");
document.getElementById("uName").innerText=val;
document.getElementById("userNmae" ).value=val;
}
});
document.getElementById("userName").addEventListener("keyup",function(event){
obj.userName=event.target.value;
}
)
</script>
</body>
</html>
執行上述的dome,可以使用控制檯,obj.username=123賦值,會自動觸發set方法。若我們在控制檯使用obj.username拿值可以觸發get方法,這也就是vue的雙向資料繫結的核心點。