因为这是没有看vue源码,只知道defineProperty,独自写的,所以并不标准,经供参考!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport"
content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
#text {
word-wrap: break-word;
}
</style>
<script>
document.addEventListener('HTMLInputElement', function () {
this.aTest = '123';
});
console.dir();
</script>
</head>
<body>
a:<input type="text"
v-Model='cText' /><br />
b:<input type="text"
v-Model="pText" /><br />
c:<input type="text"
v-Model="aText" /><br />
a:<p id="cText"></p>
b:<p id="pText"></p>
c:<p id="aText"></p>
<script>
document.onkeydown = function (event) {
if (
Object.prototype.toString.call(event.target) ===
'[object HTMLInputElement]' && event.target.getAttribute('v-Model')
) {
setTimeout(function () {
obj[event.target.getAttribute('v-Model')] =
event.target.value;
}, 0);
}
};
let obj = {
pText: '',
aText: '',
cText: '',
};
Object.keys(obj).forEach((x) => {
Object.defineProperty(obj, x, {
configurable: false,
get: function (e) {
return e;
},
set: function (e) {
document.getElementById(x).innerText = e;
return e;
},
});
});
</script>
</body>
</html>