总结:

Vue监视数据的原理:
        1.vue会监视data中所有层次的数据
        2.如何监视对象中的数据?
            通过setter实现监视,且要在new Vue时就传入要检测的数据。
               (1)对象中后追加的属性,vue默认不做响应式的处理
               (2)如需给后添加的属性做响应式,请使用如下API:
                     Vue.set(target, propertName/index, value) 或
                     Vue.$set(target, propertName/index, value)
        3.如何监测数据中的数据?
            通过包裹数组更新元素的方法实现,本质就是做了两件事:
                (1)调用原生对应对应的方法对数组进行更新
                (2)重新解析模板,进而更新页面
        4.在Vue修改数组中的某一个元素一定要用如下方法:
            1.使用这些API:
               push():向数组末尾添加新元素
               pop():删除数组中最后一个元素
               shift():删除数组第一个元素
               unshift():在数组开头添加元素
               splice():往指定位置添加或删除元素
               sort():排序
               reverse:反转
            2.Vue.set() 和 vm.$set() 不能给vm或vm的根数据对象添加属性

 1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
7 <title>总结Vue数据监测</title>
8 <script type="text/javascript" src="../js/vue.js"></script>
9
10 </head>
11 <!-- 准备好一个容器 -->
12 <div id="root">
13 <h1>学生信息</h1>
14 <button @click="student.age++">年龄+1</button><br/><br/>
15 <button @click="addSex">添加性别属性,默认值:男</button><br/><br/>
16 <button @click="student.sex = '未知' ">修改性别</button><br/><br/>
17 <button @click="addFriend">在首位置添加一个朋友</button><br/><br/>
18 <button @click="updateFirstFriendName">修改第一个朋友的名字为:猪八戒</button><br/><br/>
19 <button @click="addHobby">添加一个爱好</button><br/><br/>
20 <button @click="updateFirstHobby">修改第一个爱好为:敲代码</button>
21 <h3>姓名:{{student.name}}</h3>
22 <h3>年龄:{{student.age}}</h3>
23 <h3 v-show="student.sex">性别:{{student.sex}}</h3>
24 <h3>爱好:</h3>
25 <ul>
26 <li v-for="(h,index) in student.hobby" :key="index">
27 {{h}}
28 </li>
29 </ul>
30 <h3>朋友们:</h3>
31 <ul>
32 <li v-for="(f,index) in student.friends" :key="index">
33 {{f.name}}--{{f.age}}
34 </li>
35 </ul>
36 </div>
37 </body>
38 <script type="text/javascript">
39 Vue.config.productionTips = false //阻止vue在启动时生成生产提示
40 const vm = new Vue({
41 el:"#root",
42 data:{
43 student:{
44 name:'tom',
45 age:18,
46 hobby:['逛街','打球','k歌'],
47 friends:[
48 {name:'tony',age:22},
49 {name:'jerry',age:28},
50 ]
51 }
52 },
53 methods: {
54 addSex(){
55 // Vue.set(this.student,'sex','男')
56 this.$set(this.student,'sex','男')
57 },
58 addFriend(){
59 this.student.friends.unshift({name:'nancy',age:'30'})
60 },
61 updateFirstFriendName(){
62 this.student.friends[0].name = '猪八戒'
63 },
64 addHobby(){
65 this.student.hobby.push('学习')
66 },
67 updateFirstHobby(){
68 //this.student.hobby.splice(0,1,'敲代码')
69 //Vue.set(this.student.hobby,0,'敲代码')
70 this.$set(this.student.hobby,0,'敲代码')
71 }
72 },
73 })
74 </script>
75 </html>

13_总结Vue数据监测的更多相关文章

  1. vue 中监测滚动条加载数据(懒加载数据)

    vue 中监测滚动条加载数据(懒加载数据) 1:钩子函数监听滚动事件: mounted () { this.$nextTick(function () { window.addEventListene ...

  2. 利用InfluxDB和Grafana搭建数据监测的仪表盘

    InfluxDB的介绍及安装 InfluxDB是支持持续写入的时序数据库,常用于监测系统所需要的数据的存储. 官网的详细安装步骤 https://docs.influxdata.com/influxd ...

  3. 西安电话面试:谈谈Vue数据双向绑定原理,看看你的回答能打几分

    最近我参加了一次来自西安的电话面试(第二轮,技术面),是大厂还是小作坊我在这里按下不表,先来说说这次电面给我留下印象较深的几道面试题,这次先来谈谈Vue的数据双向绑定原理. 情景再现: 当我手机铃声响 ...

  4. Vue数据双向绑定原理及简单实现

    嘿,Goodgirl and GoodBoy,点进来了就看完点个赞再go. Vue这个框架就不简单介绍了,它最大的特性就是数据的双向绑定以及虚拟dom.核心就是用数据来驱动视图层的改变.先看一段代码. ...

  5. 【学习笔记】剖析MVVM框架,简单实现Vue数据双向绑定

    前言: 学习前端也有半年多了,个人的学习欲望还比较强烈,很喜欢那种新知识在自己的演练下一点点实现的过程.最近一直在学vue框架,像网上大佬说的,入门容易深究难.不管是跟着开发文档学还是视频教程,按步骤 ...

  6. 由自定义事件到vue数据响应

    前言 除了大家经常提到的自定义事件之外,浏览器本身也支持我们自定义事件,我们常说的自定义事件一般用于项目中的一些通知机制.最近正好看到了这部分,就一起看了下自定义事件不同的实现,以及vue数据响应的基 ...

  7. Vue 数据响应式原理

    Vue 数据响应式原理 Vue.js 的核心包括一套“响应式系统”.“响应式”,是指当数据改变后,Vue 会通知到使用该数据的代码.例如,视图渲染中使用了数据,数据改变后,视图也会自动更新. 举个简单 ...

  8. vue数据双向绑定原理

    vue的数据双向绑定的小例子: .html <!DOCTYPE html> <html> <head> <meta charset=utf-> < ...

  9. vue数据传递--我有特殊的实现技巧

    最近碰到了比较多的关于vue的eventBus的问题,之前定技术选型的时候也被问到了,vuex和eventBus的使用范围.所以简单的写一下.同时有一种特殊的实现方案. 有这么几种数据传递方式,vue ...

  10. vue数据双向绑定的原理、虚拟dom的原理

    vue数据双向绑定的原理https://www.cnblogs.com/libin-1/p/6893712.html 虚拟dom的原理https://blog.csdn.net/u010692018/ ...

随机推荐

  1. vscode 点左下角 切换分支 不显示远程分支 git

    查看当前分支 git branch -vv 查看所有分支 包含远程分支 git branch -a 放弃merge // 这个很重要 git merge --abort 暂存 git stash 拉取 ...

  2. Rust 标准库 Trait 指南

    部分内容来自 Rust 2021 年期刊 内容目录 引言 Trait 基础 自动 Trait 泛型 Trait 格式化 Trait 操作符 Trait 转换 Trait 错误处理 迭代器 Trait ...

  3. Java基础知识篇01——Java基本介绍

    一.什么是 Java Java 是 Sun Microsystems 于 1995 年首次发布的一种编程语言和计算平台.编程语言还是比较好理解的,什么是计算平台呢? 计算平台是电脑中运行应用程序(软件 ...

  4. Linux 文件权限、VIM、防火墙

    Linux 文件权限.VIM.防火墙 目录 Linux 文件权限.VIM.防火墙 SSH连接 环境变量 权限 更改文件所属 更改文件权限 su和sudo 包管理器 VI/VIM iptables防火墙 ...

  5. 云VR给当今的教育行业带来哪些契机

    教育一直是国之根本大策,培养下一代高科技新型人才是新时代规划的重要建设目标.教育的授课方式也别出心裁,不断地涌现出教育的新模式.3DCAT 云VR别出心裁,为教育行业带来新的教学方式和简化管理的全新系 ...

  6. 为什么说HTTPS比HTTP安全? HTTPS是如何保证安全的?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.安全特性 在上篇文章中,我们了解到HTTP在通信过程中,存在以下问题: 通信使用明文(不加密),内容可能被窃听 不验证通信方的身份,因 ...

  7. vue3.0 demo代码记录

    最近在研究vue3.0,这里给大家分享下找到的介绍, 以下内容转载于:https://blog.csdn.net/baidu_31108777/article/details/114880810?op ...

  8. Springboot Mybatis 全局变量使用

    application.properties中配置 mybatis.configuration.variables.k1='v1' mybatis.configuration.variables.k2 ...

  9. C# 剪裁图片

    /// <summary> /// 剪裁图片 /// </summary> /// <param name="src">原图片</para ...

  10. java读写txt

    /** * 传入txt路径读取txt文件 * * @param txtPath * @return 返回读取到的内容 */ public String readTxt(String txtPath) ...