簡單的雙向綁定實現

主要是使用到了訂閱者模式.

<!--簡單的雙向綁定實現-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <input type="text" data-model="demo">
    <p data-bind="demo" class="demo"></p>
    <h2 data-bind="demo"></h2>
    <span data-bind="demo"></span>
</body>
<script>
    //訂閱者模式
    function Observer() {
        this.fns = []
    }

    Observer.prototype = {
        subscribe: function (fn) {
            this.fns.push(fn)
        },
        unsubscribe: function (fn) {
            this.fns = this.fns.filter(function(item) {
                return item !== fn
            })
        },
        publish: function (data, thisObj) {
            var _this = thisObj || this
            this.fns.forEach(function(item) {
                item.call(_this, data)
            })
        }
    }
    var o = new Observer
        
    var subscriber = function (data) {
        var i = document.querySelectorAll('*[data-bind="demo"]').length
        while (i--) {
            document.querySelectorAll('*[data-bind="demo"]')[i].innerHTML = data
        }
    }
    o.subscribe(subscriber)

    document.querySelector('*[data-model="demo"]').addEventListener('input', function(e) {
        e.preventDefault()
        o.publish(document.querySelector('*[data-model="demo"]').value)   
    })
</script>
</html>

這里訂閱者模式還可以完善,引入"話題"參數,使得訂閱者可以訂閱不同的"話題",對應到雙向綁定demo中,監聽多處data-model

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,124評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,886評論 18 139
  • 我的github: vue雙向綁定原理 MVC模式 以往的MVC模式是單向綁定,即Model綁定到View,當我們...
    KlausXu閱讀 45,094評論 7 90
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,206評論 4 61
  • 行動營第二天 《金字塔原理》作者 芭芭拉·明托 美國 01.在工作或者生活中我們很容易遇到一些比較散亂的信...
    水掰掰213閱讀 491評論 0 0