原生js實現數據雙向綁定


最近接觸了vue,在談到vue等等的mvvm框架之前,先了解什么是數據雙向綁定以及如何利用原生JS實現數據雙向綁定

單向數據綁定

指先把模板寫好,然后把模板和數據(數據可能來自后台)整合到一起形成HTML代碼,然后把這段HTML代碼插入到文檔流里

缺點:一旦HTML代碼生成就沒有辦法改變,如果有新數據重新傳入,就必須重新把模板和數據整合到一起插入到文檔流中

數據雙向綁定

數據模型和視圖之間的雙向綁定,用戶在視圖上的修改會自動同步到數據模型中,同樣的,如果數據模型中的值發生變化,也會同步到視圖中去。

優點:無需進行類似單向數據綁定的那些CRUD操作。

最經常應用的場景:表單

缺點:應用場景有限

框架:angular js,Vue js

底層實現大概有兩種:

1.手動綁定,同時使用dirty check去循環監聽。(代表angular js

2.前端數據劫持,使用define Property,(代表Vue js)

以下是一個簡單的小例子,在input框里輸入什么,后面就會顯示什么

代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<input type="text" id="aa"/>
<span id="bb">{{hello}}</span>
<script>
    var obj = {};
    Object.defineProperty(obj,'hello',{
        set:function(val){
            document.getElementById('bb').innerHTML = val;
            document.getElementById('aa').value = val;
        }
    });
    document.getElementById('aa').onkeyup = function(e){
        obj.hello = e.target.value;
    };
    obj.hello = "";


</script>
</body>
</html>

 運行效果如下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM