简单的双向绑定实现

作者: mochase | 来源:发表于2017-05-25 15:34 被阅读15次

主要是使用到了订阅者模式.

<!--简单的双向绑定实现-->
<!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

相关文章

  • js实现双向数据绑定

    js双向绑定几种方法的介绍 使用Object.defineProperty实现简单的js双向绑定剖析Vue原理&实...

  • Vue源码(一)

    1、作者源码实现一个简单的双向绑定

  • 简单实现双向绑定

  • 双向绑定简单实现

    https://www.jb51.net/article/172633.htm[https://www.jb51....

  • Vue使用可编辑div进行数据双向绑定的尝试

    表单可以通过简单的v-model实现数据的双向绑定(value 的单向绑定 + onChange 事件侦听),实现...

  • 深入Vue响应式原理

    1.Vue的双向数据绑定 参考 vue的双向绑定原理及实现Vue双向绑定的实现原理Object.definepro...

  • 美团面试总结

    1.angularJS双向绑定实现2.双向绑定的其他实现3.使用get,set实现双向数据绑定4.三列布局实现的三...

  • 小程序 小方法

    微信小程序input数据双向绑定 简单实现双向数据绑定--对象下的属性赋值绑定(可以自己改一元变量方式)每个页面引...

  • 双向绑定的简单实现

    双向绑定,其实就是V改变,M跟着改,M改变,V跟着改 如上图所示,当我们修改输入框的值时,要同时修改红色的字,由以...

  • 简单的双向绑定实现

    主要是使用到了订阅者模式. 这里订阅者模式还可以完善,引入"话题"参数,使得订阅者可以订阅不同的"话题",对应到双...

网友评论

    本文标题:简单的双向绑定实现

    本文链接:https://www.haomeiwen.com/subject/bakzxxtx.html