使用defineproperty来定义setter、getter来进行拦截与更新Dom
Html:
<input id = 'input1' />
<input id = 'input2' />
JavaScrpt:
let model = { value: '' };
let vm = {};
Reflect.defineProperty(vm, 'value', {
set(newValue) {
Reflect.set(model, 'value', newValue);
document.getElementById('input2').value = newValue;
document.getElementById('input1').value = newValue;
},
get() {
return Reflect.get(model, value);
}
})
document.getElementById('input1').addEventListener('input', (e) => {
vm.value = e.target.value;
})
document.getElementById('input2').addEventListener('input', (e) => {
vm.value = e.target.value;
})
网友评论