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. 组织:ISO

    国际标准化组织(ISO)是一个全球性的非政府组织,成立于1947年,总部位于瑞士日内瓦. 该组织负责绝大部分领域(包括军工.石油.船舶等垄断行业)的标准化活动,中国是其正式成员,代表中国参加的国家机构 ...

  2. Hadoop安装学习(第二天)

    学习任务: 1.对VMnet8进行设置 2.配置主机名,对host文件进行编辑 3.将Hadoop文件以及jdk通过Xshell7传输到Linux系统 4.设置免密登录

  3. Object类和对象类型转换

    学习内容:Object类和对象类型转换 一.Object类 1.Object类是所有类的父类,是Java类层中最高层的类. 2.getClass()方法:返回对象执行时的Class实例,然后用此实例调 ...

  4. MongoDB 各项命名规范

    每日一句 Progress is the result of a bunch of failures. 进步是不断失败的成果. 概述 MongoDB涉及到的一些比如集合啥的命令规范. 集合的命名规范 ...

  5. 向sqlserver 数据库插入emoji 表情包

    1.emoji 属于特殊字符 所以我们必须使用utf-8 的编码格式进行保存  不过好在sqlserver 默认支持utf-8 2.将需要存储emoji的字段必须设置为nvarchar 类型  因为v ...

  6. Unity实现”对象池管理器“

    前言:警告!这可能是坨屎,空闲时间写成,仅作娱乐 在Unity中生成或销毁一个物体会占用较大的资源,如果是制作FPS射击游戏,子弹生成更是雪上加霜.所以我自己写了一个PoolManager,不能和网上 ...

  7. uni-simple-router

    目录 uni-simple-router 一.快速上手 扩一:webpack插件之DefinePlugin 扩二:uni-read-pages 如何获取pages.json中的路由 二.H5模式 2. ...

  8. model.apply(fn)或net.apply(fn)

    详情可参考:https://pytorch.org/docs/1.11/generated/torch.nn.Module.html?highlight=torch%20nn%20module%20a ...

  9. DYOJ 【20220303模拟赛】最少分组 题解

    最少分组 题意 \(n\) 个点 \(m\) 条边的无向图,可以删掉 0 条或多条边,求满足条件的最小连通块数量: 对每个顶点对 \((a,b)\) ,若 \(a\) 和 \(b\) 同属于一个连通块 ...

  10. 基于MybatisPlus代码生成器(2.0新版本)

    一.模块简介 1.功能亮点 实时读取库表结构元数据信息,比如表名.字段名.字段类型.注释等,选中修改后的表,点击一键生成,代码成即可提现出表结构的变化. 单表快速转化restful风格的API接口并对 ...