美文网首页js css htmljavascript
js实现数据的双向绑定

js实现数据的双向绑定

作者: 欢宝吖_ | 来源:发表于2022-09-10 20:08 被阅读0次

js实现数据的双向绑定

数据的双向绑定

双向绑定指的是视图和数据两个之间双向绑定!

在页面中绑定两个或者多个元素,比如一个input框和一个p标签,当在input框输入值时,p标签也会自动更新文本。只关注数据的操作,减少对DOM的操作。

一、直接赋值

也就是将input框的值赋值给p标签的文本

html代码块

    <p id="txt"></p>
    <input type="text" id="inp">

js代码块

   <script>
       var txt = document.getElementById('txt');
       var inp = document.getElementById('inp');
       inp.oninput = function() {
           txt.innerHTML = inp.value;
       }
   </script>

也能够实现当input框的值发生改变时,p标签的文本也可以及时主动更新

实现效果


直接赋值1.png 直接赋值2.png

二、访问器监听 Object.defineProperty方法

访问器监听的实现,主要采用了javascript中原生方法:Object.defineProperty,该方法可以为某对象添加访问器属性,当获取或者给该对象属性赋值的时候,会触发访问器属性

注意:1.Object.defineProperty方法只能用于对象,所有使用该方法时,必须创建对象。

2.当你访问或者获取该对象的属性时,会立马触发访问器属性getter,从而去获取该属性的值

3.当你设置该对象的属性时,会立马触发访问器属性setter,设置该属性的值,setter更改的是视图(DOM)!setter必须要传参!

html代码块

    <p id="txt"></p>
    <input type="text" id="inp">

js代码块

    <script>
        var txt = document.getElementById('txt');
        var inp = document.getElementById('inp');
        var obj = {} //创建空对象——‘数据中心’
        Object.defineProperty(obj, 'value', {
            //获取input的值
            get() {
                return inp.value
            },
            //设置input框的值
            set(res) {
                inp.value = res
                // 数据改变了触发setter方法,更改的是视图(DOM)==>数据改变视图
                txt.innerHTML = res
            }
        })

        // 操作DOM,更改的是数据==>视图改变数据
        inp.oninput = function() {
            obj.value = inp.value
        }
    </script>

实现效果


js方法1.png
js方法2.png

相关文章

  • JS双向数据绑定

    双向数据绑定简述 双向数据绑定,可以将JS对象的属性绑定到DOM节点上,实现JS对象跟DOM节点的同名属性的关联,...

  • Vue框架基础

    原生js与Vue框架的区别 用原生实现双向数据绑定 用Vue实现双向数据绑定 Vue是一个javaScript框架...

  • vuejs如何实现数据双向绑定 与 Object.defineP

    vuejs如何实现数据双向绑定 实现数据绑定的做法有大致如下几种: 发布者-订阅者模式(backbone.js)脏...

  • Vue.js 双向数据绑定原理分析

    在使用Vue.js自定义组件时,很多时候,我们都期望数据是双向绑定的。 Vue.js实现双向数据绑定的两种方式 1...

  • Vue之表单双向数据绑定和组件

    三、表单双向数据绑定和组件 目录:双向数据绑定、组件 1.双向数据绑定 1)什么是双向数据绑定Vue.js是一个M...

  • Object.defineproperty实现数据和视图的联动

    实现数据和视图的联动,即实现双向绑定,听起来是不是很牛叉?并且vue.js和avalon.js 都是通过它实现双向...

  • vue 双向数据绑定

    Vue实现数据双向绑定的原理:Object.defineProperty()vue实现数据双向绑定主要是:采用数据...

  • vue 入门

    1.1 vue的引入数据的双向绑定:也就是数据的同步修改 1.1.1. vue与js的对比----js的实现 --...

  • Vue实现数据双向绑定的原理

    Vue实现数据双向绑定的原理:Object.defineProperty() vue实现数据双向绑定主要是:采用数...

  • js实现双向数据绑定

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

网友评论

    本文标题:js实现数据的双向绑定

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