Skip to content

简易双向绑定 #3

@lvleihere

Description

@lvleihere
// one
const data = {
    value: ''
};
const _data = {
    value: ''
};
Object.defineProperty(data, 'value', {
    get() {
          return _data.value;
    },
    set(value) {
          ipt.value = value;
          _data.value = value;
          console.log(data.value);
    }
});
const ipt = document.querySelector('input');
ipt.addEventListener('input', function(e) {
    data.value = e.target.value;
});

 setTimeout(() => {
     data.value = 3;
}, 3000);
// other
let data = {};
const _data = {};
data = new Proxy(data, {
    get(target, prop, receive) {
        return _data[prop];
    },
    set(target, prop, value, receive) {
       ipt.value = value;
        _data[prop] = value;
        console.log(data.value);
    }
});
        
// V -> M
const ipt = document.querySelector('input');
ipt.addEventListener('input', function(e) {
   data.value = e.target.value;
});

// M -> V
setTimeout(() => {
    data.value = 3;
}, 3000);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions