如何原生js实现 v-model
指令 的双向数据绑定原理
实现方法:数据劫持 + 发布订阅者 的模式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="text"/>
<p>
更新数据
</p>
<!-- 通过js实现数据的双向绑定 -->
<script>
var ipt =document.querySelector('input');
var p = document.querySelector('p');
var data = {name:""};
ipt.oninput = function(){
data.name = ipt.value;
}
Object.defineProperty(data,"name",{
// 数据订阅
get(){
return ipt.value;
},
// 数据劫持
set(value) {
p.innerHTML = value;
ipt.value = value;
}
})
</script>
</body>
</html>