模擬Vue2的v-model

模擬Vue2的v-model

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <!-- <button id="myBtn">改變username</button>-->
    <label for="myInput">請輸入些什麼:</label><input type="text" id="myInput"/>
    <h1 id="myTitle"></h1>
</div>

</body>
<script>

    let userinfo = {
        username: '小明'
    }
    //初始化時反顯變量的值
    updateDom(userinfo.username)
    // 利用Object.defineProperty監聽對象值的變化
    watcher();

    function watcher() {
        Object.defineProperty(userinfo, 'username', {
            set(value) {
                updateDom(value)
            },
            get(val) {
                return val
            }
        })
    }

    //     更新dom數據
    function updateDom(value) {
        document.querySelector('#myInput').value = value
        document.querySelector('#myTitle').innerHTML = value
    }

    //     給input綁定input事件,實時修改username的值
    document.querySelector('#myInput').oninput = function (e) {
        let value = e.target.value
        userinfo.username = value
    }
    //
    //     document.querySelector('#myBtn').onclick = function () {
    //         let value = '小紅'
    //         userinfo.username = value
    //     }

</script>
</html>

運行效果:

chrome_3QcEHfo4yY

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章