• JS 双向数据绑定、单项数据绑定


    简单的双向数据绑定

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <input type="text" id="aa"/>
    <span id="bb" style="border: 2px solid orange;margin-left: 20px;">{{hello}}</span>
    <br>
    <br>
    <input type="text" id="cc"/>
    
    <script>
        // 双向数据绑定的原理:属性拦截
        // 属性拦截实现方式 : 使用Object.defineProperty()将对象的属性变成访问器属性。
    
        var obj = {};
        Object.defineProperty(obj, 'hello', {
            enumerable: true,
            configurable: true,
            get: function () { // 拿到最新的值
                return document.getElementById('aa').value;
            },
            set: function (val) { // 设置最新的值
                document.getElementById('bb').innerHTML = obj.hello;
                document.getElementById('cc').value = obj.hello;
            }
        });
        Object.defineProperty(obj, 'hello2', {
            enumerable: true,
            configurable: true,
            get: function () {
                return document.getElementById('cc').value;
            },
            set: function (val) {
                document.getElementById('aa').value = obj.hello2;
                document.getElementById('bb').innerHTML = obj.hello2;
            }
        });
        document.getElementById('aa').onkeyup = function () {
            obj.hello = this.value;
        };
        document.getElementById('cc').onkeyup = function () {
            obj.hello2 = this.value;
        };
        obj.hello = ""; //属性名必须设置为空,否则在使用插值表达式的时候直接会把插值表达式显示出来
        obj.hello2 = ""; //属性名必须设置为空,否则在使用插值表达式的时候直接会把插值表达式显示出来
    </script>
    </body>
    </html>

    单项数据绑定

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <input type="text" id="aa"/>
    <span id="bb" style="border: 2px solid orange;margin-left: 20px;">{{hello}}</span>
    
    <script>
        // 双向数据绑定的原理:属性拦截
        // 属性拦截实现方式 : 使用Object.defineProperty()将对象的属性变成访问器属性。
    
        var obj = {};
        Object.defineProperty(obj, 'hello', {
            enumerable: true,
            configurable: true,
            get: function () {
                return document.getElementById('aa').value;
            },
            set: function (val) {
                document.getElementById('bb').innerHTML = obj.hello;
            }
        });
    
        document.getElementById('aa').onkeyup = function () {
            obj.hello = this.value;
        };
    
        obj.hello = ""; //属性名必须设置为空,否则在使用插值表达式的时候直接会把插值表达式显示出来
    </script>
    </body>
    </html>
  • 相关阅读:
    nginx高性能WEB服务器系列之九--nginx运维故障日常解决方案
    nginx高性能WEB服务器系列之一简介及安装
    nginx高性能WEB服务器系列之八--nginx日志分析与切割
    nginx高性能WEB服务器系列之七--nginx反向代理
    nginx高性能WEB服务器系列之六--nginx负载均衡配置+健康检查
    nginx高性能WEB服务器系列之五--实战项目线上nginx多站点配置
    nginx高性能WEB服务器系列之四配置文件详解
    nginx高性能WEB服务器系列之三版本升级
    nginx高性能WEB服务器系列之二命令管理
    阿里云平台微信告警(基于收费平台)
  • 原文地址:https://www.cnblogs.com/haohaogan/p/15700295.html
Copyright © 2020-2023  润新知