1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8" />
5 <title>Vue 计算属性</title>
6 <script type="text/javascript" src="../js/vue.js"></script>
7 </head>
8 <body>
9 <!--
10 Vue中的计算属性:
11 1.定义:要用的属性不存在,要通过已有属性计算得来。
12 2.原理:底层借助Object.defineproperty方法提供getter和setter。
13 3.get函数什么时候执行
14 .初次读取时会执行一次。
15 .当依赖的数据发生改变的时候会再次调用
16 4.优势:与通过methods实现计算属性相比,内部有缓存机制(复用),效率更高,调试方便。
17 5.备注:
18 .计算属性最终会出现在vm上,直接读取使用即可
19 .如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时依赖的数据发生改变
20
21 -->
22 <div id="root">
23 姓:<input type="text" v-model="firstName" > <br />
24 名:<input type="text" v-model="lastName" > <br />
25 全名:<span>{{fullName}}</span>
26 </div>
27 </body>
28
29 <script type="text/javascript" >
30 Vue.config.productionTip = false;// 阻止 vue 在启动时生成生产提示。
31 let vm = new Vue({
32 el: '#root',
33 data:{
34 firstName: '张',
35 lastName: '三'
36 },
37 computed:{
38 fullName: {
39 get(){ // get什么时候调用:1.初次读取fullName的时候,2.所依赖的数据发生变化的时候调用。3.其它都是直接从缓存中获取fullName的值
40 return this.firstName + '-' + this.lastName
41 },
42 set(value){ // 当this.fullName='李-四'值修改的时候调用
43 let arr = value.split('-');
44 this.firstName = arr[0];
45 this.lastName = arr[1];
46 }
47 },
48 fullName1:function(){ // 计算属性简写(当计算属性只考虑读取才能简写,fullName1直接当做get)
49 return this.firstName + '-' + this.lastName
50 }
51 }
52 })
53 </script>
54 </html>
 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8" />
5 <title>Vue 监视属性</title>
6 <script type="text/javascript" src="../js/vue.js"></script>
7 </head>
8 <body>
9 <!--
10 监视属性watch:
11 1.当被监视的属性变化时,回调函数自动调用,进行相关操作
12 2.监视的属性必须存在,才能进行监视
13 3.监视的两种写法:
14 .new Vue时传入watch配置
15 .通过vm.$watch添加监视属性
16 4.深度监视:
17 .Vue中的watch默认不监视对象内部值的改变(一层)
18 .配置deep:true可以检测对象内部值的改变(多层)
19 备注:
20 .Vue自身可以检测对象内部值的改变,但Vue提供的watch默认不检测内部值的改变
21 .使用watch时根据数据的具体结构,决定是否采用深度监视
22 -->
23 <div id="root">
24 <h2>今天天气很{{info}}</h2>
25 <button @click="changeWeather">切换天气</button>
26 <br />
27 <h3>a的值是:{{numbers.a}}</h3>
28 <button @click="numbers.a++">点我让a+1</button><br />
29 <h3>b的值是:{{numbers.b}}</h3>
30 <button @click="numbers.b++">点我让b+1</button><br />
31 </div>
32 </body>
33
34 <script type="text/javascript" >
35 Vue.config.productionTip = false;// 阻止 vue 在启动时生成生产提示。
36 let vm = new Vue({
37 el: '#root',
38 data:{
39 isHot: false,
40 numbers: {
41 a:1,
42 b:1
43 }
44 },
45 computed:{
46 info(){
47 return this.isHot ? '炎热' : '凉爽';
48 }
49 },
50 methods:{
51 changeWeather(e){
52 this.isHot = ! this.isHot;
53 }
54 },
55 watch:{
56 // isHot:{ // 不仅可以监视data中的数据,还可以监控computed中的数据
57 // immediate: true, // 初始化时自动调用一下handler
58 // handler(newValue, oldValue){ // 当isHot发生改变时调用
59 // console.log(newValue, oldValue);
60 // console.log('isHot被修改了!');
61 // }
62 // },
63 // isHot(newValue, oldValue){ // 简写模式,缺点是没办法设置immediate、deep属性
64 // console.log(newValue, oldValue);
65 // },
66 'numbers.a':{ // 监测多层次结构中某个属性的变化
67 handler(newValue, oldValue){
68 console.log('numbers.a被修改了!');
69 }
70 },
71 numbers:{
72 deep: true, // 监测多层次结构的所有变化,该值默认为false不监视
73 handler(newValue, oldValue){
74 console.log('numbers被修改了!');
75 }
76 }
77 }
78 });
79 // 另一种添加监视属性的方式
80 // 好处:可以根据用户的行为从而决定监视哪个属性
81 vm.$watch('isHot',{
82 immediate: true, // 初始化时自动调用一下handler
83 handler(newValue, oldValue){ // 当isHot发生改变时调用
84 console.log(newValue, oldValue);
85 console.log('isHot被修改了!');
86 }
87 })
88 // 简写模式,缺点是没办法设置immediate、deep属性
89 // vm.$watch('isHot',function(newValue, oldValue){ // 当isHot发生改变时调用
90 // console.log(newValue, oldValue);
91 // console.log('isHot被修改了!');
92 // })
93 </script>
94 </html>

Vue 计算属性 && 监视属性的更多相关文章

  1. vue的计算和监视属性,附一小实例

    1. 计算属性 在computed属性对象中定义计算属性的方法 在页面中使用{{方法名}}来显示计算的结果 2. 监视属性: 通过通过vm对象的$watch()或watch配置来监视指定的属性 当属性 ...

  2. Vue学习之--------监视属性(2022/7/10)

    文章目录 1.监视属性 1.1 监视属性--天气案例 1.1.1 基础知识 1.1.2 代码实例 1.1.2 测试效果 1.2 深度监视-天气案例 1.2.1 基础知识 1.2.2 代码实例 1.2. ...

  3. (尚004)Vue计算属性之基本使用和监视

    所做效果预览: test004.html <!DOCTYPE html><html lang="en"><head> <meta char ...

  4. Vue的计算属性,监视属性代码理解

    1.计算属性:在computed属性对象中定义计算属性的方法,在页面中使用{{方法名}}来显示计算的结果 //计算属性 computed:{ // 计算属性值的一个方法,方法的返回值是属性值,初始化显 ...

  5. Vue.js之Vue计算属性、侦听器、样式绑定

    前言 上一篇介绍了Vue的基本概念,这一篇介绍一下Vue的基本使用. 一.搭建一个Vue程序 1.1 搭建Vue环境 搭建Vue的开发环境总共有三种方法: 引入CDN <script src=& ...

  6. (尚006)Vue计算属性之set与get

    test004.html <!DOCTYPE html><html lang="en"><head> <meta charset=&quo ...

  7. Vue计算属性

    github地址:https://github.com/lily1010/vue_learn/tree/master/lesson06 一 计算属性定位 当一些数据需要根据其它数据变化时,这时候就需要 ...

  8. 在做vue计算属性,v-for处理数组时遇到的一个bug

    bug: You may have an infinite update loop in a component render function 无限循环 需要处理的数组(在 ** ssq **里): ...

  9. vue教程2-03 vue计算属性的使用 computed

    vue教程2-03 vue计算属性的使用 computed computed:{ b:function(){ //默认调用get return 值 } } ---------------------- ...

随机推荐

  1. zabbix-agent python脚本侦听服务器异常登录,并告警

    py脚本 import re,subprocess,time,datetime #gpasswd -a zabbix adm def ftime(a): a = a.replace('Jan','01 ...

  2. 探究MySQL中SQL查询的成本

    成本 什么是成本,即SQL进行查询的花费的时间成本,包含IO成本和CPU成本. IO成本:即将数据页从硬盘中读取到内存中的读取时间成本.通常1页就是1.0的成本. CPU成本:即是读取和检测是否满足条 ...

  3. MUI+html5+script 不同页面间转跳(九宫格)

    在点击图片/标题需要跳转到详情页面的使用场景中,首先定义图片元素的id为"tyzc",是同一类下的第一个图片 <img src="img/img3.png" ...

  4. [算法学习] dsu on tree

    简介 dsu on tree跟dsu没有关系,但是dsu on tree借鉴了dsu的启发式合并的思想. 它是用来解决一类树上的询问问题,一般这种问题有以下特征: \(1.\)只有对子树的查询: \( ...

  5. 在 Traefik Proxy 2.5 中使用/开发私有插件(Traefik 官方博客)

    Traefik Proxy 在设计上是一个模块化路由器,允许您将中间件放入您的路由中,并在请求到达预期的后端服务目的地之前对其进行修改. Traefik 内置了许多这样的中间件,还允许您以插件的形式加 ...

  6. CabloyJS 基于 EggJS 实现的模块编译与发布

    背景 现在,EggJS被许多开发团队所采用.有的团队基于商业知识产权的考量,往往会提一个问题:是否可以把EggJS当中的代码编译打包,然后再把代码丑化? 模块编译的机制 EggJS为何不能便利的实现编 ...

  7. 一文澄清网上对 ConcurrentHashMap 的一个流传甚广的误解!

    大家好,我是坤哥 上周我在极客时间某个课程看到某个讲师在讨论 ConcurrentHashMap(以下简称 CHM)是强一致性还是弱一致性时,提到这么一段话 这个解释网上也是流传甚广,那么到底对不对呢 ...

  8. 解决Windows微软账户无法登录

    更新记录 2022年4月16日:本文迁移自Panda666原博客,原发布时间:2021年8月25日. 将DNS的服务器地址修改为4.2.2.1或者4.2.2.2就可以解决无法登录microsoft账户 ...

  9. 1.Shell编程循环语句(if 、while、 until)

    循环语句 for循环语句 读取不同的变量值,用来逐个执行同一组命令 格式: for 变量名 in 取值列表 do 命令序列 done 示例:批量创建用户并设置密码 [root@localhost da ...

  10. Mybatisi和Spring整合源码分析

    一.MybatisSpring的使用 1.创建 Maven 工程. 2.添加依赖,代码如下 <dependency> <groupId>org.mybatis</grou ...