es6數據變更同步到視圖層

數據變更同步到視圖層有一個很重要的東西就是Proxy,Proxy的作用就是可以隱藏真正的對象,而用戶去修改它的代理對象.Proxy可以監聽數據的變化,例如

<div id="test">
    name:{{name}}
    age:{{age}}
</div>
<script>
    let el = document.getElementById('test');
    let datainner = {
        name:"Jack",
        age:"18"
    }
    let template = el.innerHTML;
    let data = new Proxy(datainner,{
        set(obj,name,value){
            console.log(name+"的值被操縱成了value"+value)
            obj[name]=value;
            console.log("數據改變了");
            render()
        }
    })
    data.name="Jack Chen"
</script>

clipboard.png

clipboard.png
可以監控到data數據的改變,然後就可以將數據渲染到html中,就可以實現es6數據同步到視圖層
最終代碼

 <script>
    let el = document.getElementById('test');
    let datainner = {
        name:"Jack",
        age:"18"
    }
    let template = el.innerHTML;
    let data = new Proxy(datainner,{
        set(obj,name,value){
            console.log(name+"的值被操縱成了"+value)
            obj[name]=value;
            console.log("數據改變了");
            render();
        }
    })
    render();
    //數據渲染
    function render(){
       el.innerHTML = template.replace(/\{\{\w+\}\}/g,str=>{
           str=str.substring(2,str.length-2);
           console.log(datainner[str]);
           return datainner[str]
       })
    }
</script>

最終效果
clipboard.png

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