Vue常用属性(计算属性和侦听器属性)

news2025/1/23 4:00:56

目录

计算属性computed

名称例子:

 浏览器实现:

性和名输入:

只读输入: 

读写输入:

 侦听器属性watch

练习例子:

浏览器实现:

属性侦听:

对象侦听:

 对象中的属性侦听:


官网地址:计算属性和侦听器 — Vue.js (vuejs.org)

计算属性computed

  • 方法名可以直接在对象中使用.这个属性是通过计算得出的
  • 这个方法中的任意属性改变,都会触发这个方法

​​使用场景:希望把一些计算的业务逻辑放在方法中,例如:全名计算、地址计算、购物车合计

名称例子:

此例子中有使用方法实现的,也有计算属性实现的。

推荐使用计算属性的方式。有缓存机制,在页面重复调用多次的情况下,只执行一次

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <form>
            姓:<input type="text" v-model="firstName"> 
            名:<input type="text" v-model="lastName"><br>
            方法只读实现:<input type="text" v-model="getFullName()"><br>
            计算属性只读实现:<input type="text" v-model="fullName"><br><!--计算属性直接使用不用带括号-->
            计算属性读写实现:<input type="text" v-model="funName"><!--计算属性直接使用不用带括号-->
        </form>
    </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>
     var app = new Vue({
        el: '#app',
        data() {
            return {
                firstName:'史蒂芬',
                lastName:'库里',
            }
        },
        methods:{
            //只读方式-方法中
            getFullName(){
                return this.firstName+"-"+this.lastName;
            },
        },
        computed:{
            //只读方式-计算属性中
            fullName(){
                return this.firstName+"-"+this.lastName;
            },
            //读写方式
            funName:{
                get(){
                    return this.firstName+"-"+this.lastName;
                },
                set(value){
                    this.firstName=value.split("-")[0];
                    this.lastName=value.split("-")[1];
                }
            },
        },
    });
</script>
</html>

 浏览器实现:

性和名输入:

姓和名改的话后面都会跟着一起改

只读输入: 

 只读的实现其他的却不会跟着一起改,还会有浏览器报错的情况出现

读写输入:

 读写实现其他的也是可以一起跟着改,但是计算属性一般只有只读的,读写使用的不多

 

 侦听器属性watch

  • 被侦听的属性发生改变时,调用回调函数,执行相关操作
  • 侦听属性须存在才能进行侦听

 ​​使用场景:当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的,例如:需要对修改前后的数据操作、名称修改

练习例子:

此次例子不需要HTML代码演示,但是HTML代码要写个div盒子绑定el,要不浏览器会报错

<script src="../js/vue2.7.js"></script>
<script>
     var app = new Vue({
        el: '#app',
        data() {
            return {
                isSunny:true,
                person:{
                    name:"小明",
                    age:18
                }
            }
        },
        watch:{
            //表示要对isSunny这个属性进行侦听
            isSunny(newVal,oldVal){
                console.log("改变了","修改前的数据:",oldVal,"修改后的数据:",newVal);
            },
            //深度侦听可以用来监听整个对象的改变,但要慎重使用,因为消耗性能
            person:{
                immediate:true,    //开启初始化调用
                deep:true,        //开启深度侦听
                handler(newVal,oldVal){
                    console.log("改变了","修改前的数据:",oldVal,"修改后的数据:",newVal);
                }
            },
            // 侦听复杂数据的某个属性,这也是一种简写方式
            "person.name"(newVal,oldVal){
                console.log("改变了","修改前的数据:",oldVal,"修改后的数据:",newVal);
            }
        }
    });
</script>

浏览器实现:

属性侦听:

最常用的一种侦听,可以拿到修改前后的数据

对象侦听:

immediate初始化属性:网页刷新自动执行一遍此监听。

deep深度侦听属性:用来侦听整个对象的改变,没有这个属性,就不能对对象进行侦听。

但要慎重使用,因为太消耗性能;而且修改前的对象和修改后的对象数据一样,应该是个bug可能在以后的Vue版本会对其进行修复。

 对象中的属性侦听:

如果要侦听对象,建议使用这种方式;

因为name是person对象中的数据,所以对象侦听也执行了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/875247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于STM32CUBEMX驱动TMOS模块STHS34PF80(2)----驱动STHS34PF80进行人体检测

基于STM32CUBEMX驱动TMOS模块STHS34PF80----2.驱动STHS34PF80进行人体检测 概述样品申请视频教程参考Demo引导温度测量滤波方式智能识别算法使用块数据更新&#xff08;BDU&#xff09;功能设置ODR速率状态寄存器main.c 概述 STHS34PF80 是一款非冷却、工厂校准的红外运动和存…

Java:异常处理:捕获异常,记录异常并响应合话的信息给用户;捕获异常,尝试重新修复

异常处理 1、埔获异常&#xff0c;记录异常并响应合话的信息给用户 public static void main(String[ ] args){ try {test1(); }catch (FileNotFoundException e) {system.out.println("您要找的文件不存在!! ");e.printstackTrace();//打印出这个异常对象的信息。记…

如何运用小程序技术闭环运营链路?

如何通过线上小程序获取用户线索&#xff0c;提高企业抗风险能力&#xff0c;建立有效的营销数字化系统一直是困扰每一个小程序开发者与运营者的问题。 当我们选择使用小程序设计自己的运营流程时&#xff0c;从「推广」到「转化」&#xff0c;再到最终的「留存」都是运营过程…

Grafana Loki

Loki是 Grafana Labs 团队最新的开源项目&#xff0c;是一个水平可扩展&#xff0c;高可用性&#xff0c;多租户的日志聚合系统。它的设计非常经济高效且易于操作&#xff0c;因为它不会为日志内容编制索引&#xff0c;而是为每个日志流编制一组标签。项目受 Prometheus 启发&a…

可组装的模块化开源掌机GameShell,组装起了万千极客的童年

对于热衷于复古游戏及开源掌机的极客玩家来说&#xff0c;开源硬件的普及&#xff0c;让更多极客可以有机会体验到亲手DIY掌机的乐趣&#xff0c;属于开源掌机的圈子也由此应运而生。 由一群复古游戏爱好者组成的Clockwork团队希望更进一步拓展开源掌机的拓展性和自定义性&…

AEM网络助手NSA升级更新-版本大更新

关注过或者使用AEM线缆认证测试的朋友&#xff0c;对于这款8类线认证测试仪不会陌生。 3.0-4.0是一个重大的版本变更&#xff0c;下面我们重点看看那些部分做了升级改动。 1&#xff0c;操作主界面部分&#xff0c;最大的变化的是&#xff0c;颜色对比度大为改动。界面更加协…

rabbitmq的消息应答

消费者完成一个任务可能需要一段时间&#xff0c;如果其中一个消费者处理一个长的任务并仅只完成 了部分突然它挂掉了&#xff0c;会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息&#xff0c;便立即将该消 息标记为删除。在这种情况下&#xff0c;突然有个消费者挂掉了…

如何保证数据库的数据和Redis的数据一致性

实际项目中有可能会使用Redis缓存数据&#xff0c;那么在更新数据的时候如何保证数据库中的数据和Redis缓存的数据一致&#xff0c;缓存同步策略的选择是一个很重要的问题。网上有各种说法&#xff0c;大概总结有以下几种&#xff0c;看看每种方案是否可行以及存在的问题和适用…

思维导图模板下载网站有哪些?这6个网站优质模板任你选!

信息时代&#xff0c;有效的信息组织和知识管理变得尤其重要。思维导图&#xff0c;作为一种强大的视觉化工具&#xff0c;可以帮助我们整理和理解复杂的信息&#xff0c;提高工作和学习效率。 好的思维导图模板能帮助我们拓展思路、提升美观度、更快地完成思维导图的绘制。今…

【小梦C嘎嘎——启航篇】string介绍以及日常使用的接口演示

【小梦C嘎嘎——启航篇】string 使用&#x1f60e; 前言&#x1f64c;C语言中的字符串标准库中的string类string 比较常使用的接口对上述函数和其他函数的测试代码演示&#xff1a; 总结撒花&#x1f49e; &#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右…

好用的安卓手机投屏到mac分享

工具推荐&#xff1a;scrcpy github地址&#xff1a;https://github.com/Genymobile/scrcpy/tree/master mac使用方式 安装环境&#xff0c;打开terminal&#xff0c;执行以下命令&#xff0c;没有brew的先安装brew brew install scrcpy brew install android-platform-too…

Mybatis 源码 ① :开篇

文章目录 一、前言二、项目搭建三、自动装配四、总结 一、前言 Mybatis 官网 以及 本系列文章地址&#xff1a; Mybatis 源码 ① &#xff1a;开篇Mybatis 源码 ② &#xff1a;流程分析Mybatis 源码 ③ &#xff1a;SqlSessionMybatis 源码 ④ &#xff1a;TypeHandlerMybat…

ubuntu1804系统ROS1和ROS2一键装机

备忘一下ROS1和ROS2的一键装机 原网址:小鱼的一键安装系列 指令: wget http://fishros.com/install -O fishros && . fishros如果想同时安装ROS1和ROS2, 运行两次. fishros, 工具会自动将ROS1和ROS2放在不同的文件目录下 安装完每次打开终端时, 会提示选择ROS1还是RO…

【Linux】应用层协议

【Linux】应用层协议 文章目录 【Linux】应用层协议1、协议作用1.1 应用层需求1.2 协议分类 2、HTTP & HTTPS2.1 HTTP/HTTPS 简介2.2 HTTP工作原理2.3 HTTPS工作原理2.4 区别 3、URL3.1 编码解码3.2 URI & URL 4、HTTP 消息结构4.1 HTTP请求方法4.2 HTTP请求头信息 5、…

思维导图在线制作,10款好用的思维导图在线制作网站推荐!

思维导图的强大作用在于它以直观、易理解的图形方式展现信息&#xff0c;让复杂的内容变得简单明了&#xff0c;极大地提升了我们的学习和工作效率。与传统的手绘思维导图相比&#xff0c;在线思维导图制作工具更具有灵活性和实用性&#xff0c;它们提供了丰富的功能&#xff0…

00|Java中常见错误或不清楚

00. 多变量声明并初始化 同时声明同类型的多变量 String a "Hello", c "hello"; int x 5, y 5;01. 变量类型 01.0 浮点类型 默认是double类型&#xff0c;如果需要指定float类型&#xff0c;可以float f 1.0F; 01.1 类型装换 如果将大的类型转为…

立秋至 | 共建智慧城,秋日硕果时

一缕缕阳光洒向大地 一股股热浪迎面拂来 一声声虫鸣清脆悦耳 一片片黄叶轻声而落 一份份清凉沁入心间 一个个硕果接踵而至 跟随我们一起来回顾下 往期铭控小伙伴们 在助力建设智慧城市 做了哪些努力呢 都做了哪些项目呢 得到了多少客户的认可呢 Part 1 智慧消防 消防…

关于网络入侵检测领域使用Spark/Flink等计算框架做分布式

关于网络入侵检测领域使用Spark/Flink等计算框架做分布式 0、引言1 基于LightGBM的网络入侵检测研究2 基于互信息法的智能化运维系统入侵检测Spark实现3 基于Spark的车联网分布式组合深度学习入侵检测方法4 基于Flink的分布式在线集成学习框架研究5 基于Flink的分布式并行逻辑回…

【AHB】初识 AHB 总线

AHB 与 APB、ASB同属于 AMBA 总线架构规范&#xff0c;该总线规范由 ARM 公司提出。 目录 一、AHB 总线 二、AHB 总线组成 三、AHB 主从通信过程 一、AHB 总线 AHB&#xff08;Advanced High Performance Bus&#xff09;,意为高级高性能总线&#xff0c;能将微控制器&…

excel 下载方法封装

1.首先需要拿到后端返回的URL下载地址 2.写个下载方法 // url 接口返回的下载地址。例如&#xff1a;https://cancer-research.oss-cn-beijing.aliyuncs.com/yuance-platform-permission/校内共享数据导入模板.xlsx // name 文件名称 例如&#xff1a; 校内共享数据导入模板 /…