vue 数据代理和数据监测

2023-10-27

vue 数据代理和数据监测

数据代理数据监测是vue 里面一个很重要的概念,但是他们在vue中扮演什么角色,了解这些前得先了解 数据代理数据监测的概念。

vue中双向绑定 v-model和v-bind 指令都能将模型数据反应到页面,而且每当模型页面数据改变时都能反馈到页面,v-model页面上的数据改变也能反映到模型 这里面就包含着 数据代理数据监测 的使用。

1.数据代理:

通过一个对象去对另一个对象属进行操作

实现原理是通过 ES6语法中Object对象的defineProperties方法实现的。

Object.defineProperty(obj, prop, desc)

obj 需要定义属性的当前对象
prop 当前需要定义的属性名
desc 属性描述符

因为主要是讲数据代理和数据监测 所以主要讲下desc 里面的getter和setter配置项,其他的用法就省略了。

let obj={};
        let objName='lisi';
    Object.defineProperty(obj,'name',{
       
        get(){
            console.log('get');
            return objName;
        },
        set(val){
            console.log('set');
            objName=val;
        }
    
    });
    console.log(obj.name);
    obj.name='111';
    console.log(obj.name);

运行结果:

get
lisi
set
get
111

上面的案例实现了,当访问obj的name属性就触发get方法返回objName的值,给obj的name属性复制就触发set方法将值赋给objName,这样就实现了通过obj的name属性去操作objName对象,这就是数据代理,而当数据发生改变被set操作监测到更新值并重新渲染页面时这就是 数据监测

<script>
    const vm=new Vue({
        el:'#root',
        data() {
            return {
                name:'张三',
                id:1
            }
        },
    })
</script>>

定义一个简单的vue对象去看vue中data属性里面的值

在这里插入图片描述
可以看到 vue为data属性里面的name和id都生成了get,set方法。

通过生成的 name,id属性去代理data中的name,id属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue 数据代理和数据监测 的相关文章

  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • 使用 useReducers 调度函数发送多个操作?

    使用时是否可以通过调度函数发送多个动作useReducer挂钩反应 我尝试向它传递一组操作 但这会引发未处理的运行时异常 明确地说 通常会有一个初始状态对象和一个减速器 如下所示 const initialState message1 nu
  • Javascript正则表达式用于字母字符和空格? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一个
  • 标签获取 href 值

    我有以下 html div class threeimages a img alt Australia src Images Services 20button tcm7 9688 gif a div class text h2 a hre
  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • 如何在react-native中获取Text组件的onPress值

    我是一名新的 React Native 开发人员 我想使用 onPress 获取 Text 组件的值并将其传递给函数
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • Javascript转换时区问题

    我在转换当前时区的日期时间时遇到问题 我从服务器收到此日期字符串 格式为 2015 10 09T08 00 00 这是中部时间 但是当我使用 GMT 5 中的 new Date strDate 转换此日期时间时 它返回给我的信息如下 这是不
  • 如何仅在最后一个
  • 处给出透明六边形角度?
  • 我必须制作这样的菜单 替代文本 http shup com Shup 330421 1104422739 My Desktop png http shup com Shup 330421 1104422739 My Desktop png
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win

随机推荐

  • 解决YOLOV5训练时P、R、mAP等值均为0的问题

    最近用YOLOV5训练自己的数据集 出现了训练失败的情况 比如box obj cls labels等均为nan或0 找了很多办法 其实就是cuda与PyTorch版本的问题 Epoch gpu mem box obj cls labels
  • 1603A - Di-visible Confusion

    1603A Di visible Confusion 题目 一个长度为N的数组从a1 a2 an 如果在存在不能被整除则可以删除 剩下的数变为a1 a2 an 1 求是否能使得数组为空 题解 每个数都会因为前一个数被删除而前移 所以遍历所有
  • 微信小程序如何实现将数据导出生成excel

    码字不易 有帮助的同学希望能关注一下我的微信公众号 Code程序人生 感谢 代码自用自取 这个需求也是我在接私活的时候遇到的 需求就是 要实现将指定数据库表的数据全部导出生成excel和按需导出 也就是导出全部数据 或者导出指定哪天的数据
  • Package opencv was not found in the pkg-config search path.

    安装好后opencv后执行下面这条语句的时候出错 pkg config cflags opencv Package opencv was not found in the pkg config search path Perhaps you
  • Git创建远程分支并提交代码到远程分支

    1 可以通过git branch r 命令查看远端库的分支情况 动图演示 选择项目右键选择 Git Bash Here 然后输入命令git branch r 2 从已有的分支创建新的分支 如从master分支 创建一个dev分支 但此时并没
  • 如何把itunes中的语音备忘录导出来

    2012 4 18 以前我把手机上的语音备忘录导出到itunes中 现在我想把在itunes中的语音备忘录导出来 如何导 己找到解决办法了 在语音备忘录中的语音文件 右键 选择 在资源管理其中显示
  • VSCode 结合Makefile设置调试方法

    添加构建 编译 链接等 任务 tasks json ctrl shift p打开命令行 输入Tasks Run task Create tasks json file from template 生成默认的tasks json文件 See
  • pythonturtle填充颜色函数_python turtle库颜色填充-绘制心形

    颜色填充函数 使用Turtle不仅可以画线条 也可以将画出的封闭线条进行填充 开始填充 begin fill 设定填充色 fillecolor 结束填充 end fill 实际操作 练习1 画心形import turtle import r
  • matlab中列平方求和公式,matlab求两列数据的平方和

    matlab怎样求矩阵每一行的平方和 有矩阵a则你所要求的矩阵b sum a a 2 附 这是点乘 就是矩阵每个对应位置的元素相乘sum a 2 是按行相加 得出的为列向量若sum a 是按列相加 得出的为行向量 基于matlab的数据正态
  • C语言的强制类型转换本质是什么?

    数据在计算机中是如何存储的 程序最终是要在计算机中运行的 中间产生的数据会暂存在内存 寄存器 cache中 也可以写到硬盘中保存起来 对计算机而言 数据没有什么变量类型 int char等 的区别 以字节为单位 计算机里存在的不是0就是1
  • AES128/ECB/PKCS5Padding 的实现

    AES的相关基础知识直接看WikiPedia 高级加密标准 附上 C C 可用代码 AES Cipher
  • 第15届全国大学生知识竞赛 2022ciscn初赛 部分wp

    Misc ez usb 1 键盘流量 USB协议数据部分在Leftover Capture Data域中 数据长度为八个字节 其中键盘击键信息集中在第三个字节中 如图 发现击键信息为0x06 即对应的按键为C 2 鼠标流量 USB协议鼠标数
  • Quoit Design (白话--分治--平面点对问题)

    Quoit Design Problem Description Have you ever played quoit in a playground Quoit is a game in which flat rings are pitc
  • php 获取图片的宽高,js如何获取图片宽高

    js获取图片宽高的方法 1 onload后在打印 2 通过complete与onload一起混合使用 3 通过定时循环检测获取 代码为 from check width img width height img heig 本教程操作环境 w
  • 二十天入门Java系列:第一天

    文章目录 第一天 01 01 计算机基础知识 计算机概述 了解 01 02 计算机基础知识 软件开发和计算机语言概述 了解 01 03 计算机基础知识 人机交互 了解 01 04 计算机基础知识 键盘功能键和快捷键 掌握 01 05 计算机
  • FPGA查找表

    一 查找表 Look Up Table 的原理与结构 采用这种结构的PLD芯片我们也可以称之为FPGA 如altera的ACEX APEX系列 xilinx的Spartan Virtex系列等 查找表 Look Up Table 简称为LU
  • 任意整数从0-x累加的巧妙算法

    巧妙的累加算法 include
  • 【实验七】【使用规则实现数据完整性】

    文章目录 数据完整性 约束的形式 规则与默认值的SQL语句 一 创建一个关于开课学期的规则 二 创建一个关于性别的规则 三 创建一个关于学分的规则 总结 Reference 数据完整性 约束的形式 下边通过一个总体说明约束怎样保证数据完整性
  • 利用CDN加速react webpack打包后的文件

    此文不介绍webpack基本配置 如果对基本配置有疑问请查阅官方文档 1 配置webpack config js 将output publicPath改成上传到的cdn地址 例 对应上面上传配置 publicPath https your
  • vue 数据代理和数据监测

    vue 数据代理和数据监测 数据代理和数据监测是vue 里面一个很重要的概念 但是他们在vue中扮演什么角色 了解这些前得先了解 数据代理和数据监测的概念 vue中双向绑定 v model和v bind 指令都能将模型数据反应到页面 而且每