Vue 计算属性 && 监视属性
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 计算属性 && 监视属性的更多相关文章
- vue的计算和监视属性,附一小实例
1. 计算属性 在computed属性对象中定义计算属性的方法 在页面中使用{{方法名}}来显示计算的结果 2. 监视属性: 通过通过vm对象的$watch()或watch配置来监视指定的属性 当属性 ...
- 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. ...
- (尚004)Vue计算属性之基本使用和监视
所做效果预览: test004.html <!DOCTYPE html><html lang="en"><head> <meta char ...
- Vue的计算属性,监视属性代码理解
1.计算属性:在computed属性对象中定义计算属性的方法,在页面中使用{{方法名}}来显示计算的结果 //计算属性 computed:{ // 计算属性值的一个方法,方法的返回值是属性值,初始化显 ...
- Vue.js之Vue计算属性、侦听器、样式绑定
前言 上一篇介绍了Vue的基本概念,这一篇介绍一下Vue的基本使用. 一.搭建一个Vue程序 1.1 搭建Vue环境 搭建Vue的开发环境总共有三种方法: 引入CDN <script src=& ...
- (尚006)Vue计算属性之set与get
test004.html <!DOCTYPE html><html lang="en"><head> <meta charset=&quo ...
- Vue计算属性
github地址:https://github.com/lily1010/vue_learn/tree/master/lesson06 一 计算属性定位 当一些数据需要根据其它数据变化时,这时候就需要 ...
- 在做vue计算属性,v-for处理数组时遇到的一个bug
bug: You may have an infinite update loop in a component render function 无限循环 需要处理的数组(在 ** ssq **里): ...
- vue教程2-03 vue计算属性的使用 computed
vue教程2-03 vue计算属性的使用 computed computed:{ b:function(){ //默认调用get return 值 } } ---------------------- ...
随机推荐
- docker+nginx+redis部署前后端分离项目!!!
介绍本文用的经典的前后端分离开源项目.项目的拉取这些在另一篇博客!!! 其中所需要的前后端打包本篇就不做操作了!!不明白的去看另一篇博客!!! 地址:http://www.cnblogs.com/ps ...
- unity---世界坐标和本地坐标的转换
会受到缩放的影响 用的比较多的是 本地坐标转换为世界坐标,比如在自己周围释放物体 当物体发生旋转,方向会发生变化
- 将CSV格式或者EXCEL格式的文件导入到HIVE数据仓库中
学习内容:数据导入,要求将CSV格式或者EXCEL格式的文件导入到HIVE数据仓库中: ①hive建表:test1 create table test1 (InvoiceNo String, Stoc ...
- jeecgboot-vue3笔记(三)弹窗的使用
需求描述 点击按钮,弹窗窗体(子组件),确定后在子组件中完成业务逻辑处理(例如添加记录),然后回调父组件刷新以显示最近记录. 实现步骤 子组件 子组件定义BasicModal <BasicMod ...
- Django+Vue+Nginx+Https域名代理访问
Django+Vue使用Nginx实现Https域名的安全访问 前端 VUE 前端访问自身域名: https://demo.com,后序使用 Nginx 代理至后端 直接访问后端https:api会无 ...
- vue运行npm run dev时候,自动打开页面
在config/index.js找到dev:{}里面的autoOpenBrowser: 设置为true,重新npm run dev一次就自动弹出浏览器页面啦!
- “极简”创建 github page 并设置域名
最简单最详细的,创建 github page 并设置域名,没有多余的步骤,并且多图,对新手特别友好 尝试用 github page 创建博客,并设置独立域名.网上找了许多教程,都太复杂.自己的创建过程 ...
- 关于Node.js 链接mysql超时处理(默认8小时)
备注:这是在pm2配置node环境下,超过8小时mysql自动关闭的情况下出现的解决方法:1.封装mysql.js var mysql = require('mysql'); var connecti ...
- UiPath屏幕抓取Screen Scraping的介绍和使用
一.屏幕抓取(Screen Scraping)的介绍 屏幕抓取使您能够在特定的UI元素或文档(如.PDF文档)中提取数据 二.屏幕抓取(Screen Scraping)在UiPath中的使用 [if ...
- git 删除、合并多次commit提交记录
合并多次记录 1. git log找到要合并的记录的数量. 2. git rebase -i HEAD~5 将最上面一个的记录选为pack,下面记录都改为s. ================= 删除 ...