总结:

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. mac Error: EACCES: permission denied, mkdir

    原因还是权限问题 就是说 npm 出于安全考虑不支持以 root 用户运行,即使你用 root 用户身份运行了,npm 会自动转成一个叫 nobody 的用户来运行,而这个用户几乎没有任何权限.这样的 ...

  2. Jetpack架构组件学习(0)——总结篇

    原文地址:Jetpack架构组件学习(0)--总结篇 | Stars-One的杂货小窝 对之后学习的Jetpack架构开发优点进行简单总结,及对应的文章分类链接 LifeCycle 主要解决将一些初始 ...

  3. 【Atcoder F - Cumulative Cumulative Cumulative Sum】线段树

    要特别注意下精度,long,int范围.WA了几次 import java.util.Scanner; class Main { // static long[] A2 ;//i^2*AI // st ...

  4. HeaderedContentControl实现左右对称

    在我们使用TextBlock却想给前面添加固定字段的时候,发现TextBlock没有Header属性, 这个时候我们可以用到HeaderedContentControl 然而,默认情况下Headere ...

  5. 前端优化 之 preload

    为了优化我们公司网站的性能,我最近引入了浏览器预加载技术(Preload). 这项技术可以显著减少级联情况,提高资源加载的并行度,从而加速网站的加载速度. Preload的原理 Preload的原理是 ...

  6. springboot mybatis 多数据源整合

    1.在application.properties中配置两个数据库: # db01 database spring.datasource.db01.jdbc-url=jdbc:oracle:thin: ...

  7. 复现YOLO-of-RoboMaster-Keypoints-Detection-2023

    开源仓库地址: https://github.com/zRzRzRzRzRzRzR/YOLO-of-RoboMaster-Keypoints-Detection-2023 该仓库提供了数据集,目前只是 ...

  8. KingbaseES V8R3 集群运维系列 -- db vip和cluster vip管理

    ​ 案例说明: KingbaseES V8R3集群集成了DB VIP(应用连接)和Cluster VIP(集群管理),本案例描述了两种vip在集群的相关配置及集群故障时vip漂移的问题. 适用版本: ...

  9. Games101:作业6

    说明 本次作业主要实现对上一次作业代码的重构以及使用BVH加速求交的交点判断和递归调用 代码框架的修改 有影响的改动就是框架中定义了两个结构体一个是光线ray,一个是交点Intersection 交点 ...

  10. NOIP 2007 普及组

    NOIP 2007 普及组(DONE) 注:本文不附原题,可上Luogu有题对照查询. 1.CPU:即中央处理器,由运算器+控制器+寄存器组成,不含主板(但CPU是装在主板上的). 2.二维表即常见的 ...