模拟Vue数据的双向绑定

简介: Vue的数据双向绑定功能一直为人称道, Vue数据的双向数据绑定主要依赖了Object.defineProperty,这里尝试用最简单的代码, 实现数据的双向绑定DemoMVVMViewModel基本实现原理Gi...

Vue的数据双向绑定功能一直为人称道, Vue数据的双向数据绑定主要依赖了Object.defineProperty,这里尝试用最简单的代码, 实现数据的双向绑定Demo

MVVM

ViewModel基本实现原理

Gif动态效果:

数据双向绑定
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数据双向绑定的实现</title>

    <style>

        section{
            text-align: center;
        }

        input{

            width: 800px;
            height: 100px;
            font-size: 90px;
            color: #d46f17;
        }

        div, label{

            width: 500px;
            height: 110px;
            font-size: 90px;
            color: #c03035;
            text-align: center;


        }

        body{

            align-content: center;


        }


    </style>
    <script>
        window.onload = function(){
            // 创建数据对象
            window.data = {};
            // 创建数据键值对
            let _name = "";
            let my_input = document.getElementById('myInput');
            let desc = document.getElementById("desc");

            Object.defineProperty(window.data, "name", {
                // 返回数据
                get: function(){
                    return _name;
                },
                // 设置数据
                set: function(value){
                    _name = value;
                    // 将新数据添加到input和div元素内
                    my_input.value = value;
                    desc.innerHTML = value;

                }
            });
            // 获取input按钮, 并为其绑定事件
            my_input.addEventListener('input', function (ev) {
                new_data = ev.target.value;
                console.log("当前输入框内的数据为:",new_data);
                // 将框内的数据赋值给, data
                window.data.name = new_data
            })
        }
    </script>

</head>
<body>
    <section>
        <label for="myInput">双向绑定Demo</label><input type="data" id="myInput">
        <div id="desc"></div>
    </section>

</body>
</html>
目录
相关文章
|
25天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
27天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
22天前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
126 64
|
1天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
22 1
|
25天前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
27 1
|
28天前
|
监控 JavaScript 算法
深度剖析 Vue.js 响应式原理:从数据劫持到视图更新的全流程详解
本文深入解析Vue.js的响应式机制,从数据劫持到视图更新的全过程,详细讲解了其实现原理和运作流程。
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
25天前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
JavaScript 测试技术 容器
Vue2+VueRouter2+webpack 构建项目
1). 安装Node环境和npm包管理工具 检测版本 node -v npm -v 图1.png 2). 安装vue-cli(vue脚手架) npm install -g vue-cli --registry=https://registry.
1059 0