Vue(10-20)

news2024/9/25 3:18:49

1Vue赋值方式

Object.defineProperty

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script src="./js/vue.js"></script>
<body>
    <script>
        let person = {
            name:'tony teacher',
            sex:'male',
            //age:19
        }

        Object.defineProperty(person,'age',{
            value:19,
            enumerable:true, //可以枚举
            writable:true,  //可以被修改
            configurable:true,  //可以被删除
        })
        console.log(person)
    </script>
</body>
</html>

一般赋值方式一旦number变化不会同步到age

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script src="./js/vue.js"></script>
<body>
    <script>
        let number = 18
        let person = {
            name:'tony teacher',
            sex:'male',
            age:number
        }

        
        console.log(person)
    </script>
</body>
</html>

getter实现常态化赋值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script src="./js/vue.js"></script>
<body>
    <script>
        let number = 10
        let person = {
            name:'tony teacher',
            sex:'male',
            
        }
        
        Object.defineProperty(person,'age',{
            get:function(){
            return number
        }
        })
        
        console.log(person)
    </script>
</body>
</html>

result
在这里插入图片描述

2数据代理

通过一个对象代理 另一个对象属性的操作(读写)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./js/vue.js"></script>
</head>
<body>
    <script>
        let obj1 = {x:100}
        let obj2 = {y:200}

        Object.defineProperty(obj2,'x',{
            get(){
                return obj1.x
            },
            set(value){
                obj1.x=value
            }
        })
    </script>
</body>
</html>

在这里插入图片描述

3Vue中的数据代理

Vue数据代理示意图:
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./js/vue.js"></script>
</head>
<body>
    <div id="root">
        <h2>school:{{name}}</h2>
        <h2>addreee:{{address}}</h2>
    </div>
    <script>
       const vm = new Vue({
        el:'#root',
        data:{
            name:'某硅谷',
            address:'某科技园'
        }
       })
    </script>
</body>
</html>

conclude:
1vue数据代理通过vm代理data对象属性的读写操作
2代理好处:方便操作data里面的数据

4事件处理(需要重试)

methods

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./js/vue.js"></script>
</head>
<body>
    <div id="root">
        <h2>欢迎来到{{name}},welcom</h2>
        <button v-on:click=showInfo()>电击我,告诉你情报是什么</button>
    </div>
    <script>
        new Vue({
            el:'#root',
            data:{
                name:'某硅谷'
            },
            method:{
                showInfo(){
                    alert('什么都没有')
                    console.log(event.target.innerText)
                    console.log(this)//显示vm
                }
            }
        })
    </script>
</body>
    

</html>

v-on: <==> @

在这里插入图片描述

5事件修饰符

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>事件的基本用法</title>
    <script src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <h2>hello,{{name}}</h2>
        <button v-on:click="showInfo1">点我提示信息1</button>
        <button @click="showInfo2($event,66)">点我提示信息2</button>
    </div>

    <script>
        Vue.config.productionTip = false 
        new Vue({
            el:'#root', 
            data:{
                name:'JOJO'
            },
            methods:{
                showInfo1(event){
                    console.log(event)
                },
                showInfo2(evnet,num){
                    console.log(event,num)
                }
            }
        })
    </script>
</body>
</html>

事件修饰符:
1prevent:阻止默认事件
2stop阻止事件冒泡
3once事件只触发一次

4capture使用事件的捕获模式
5self:只有event.target是当操作的元素才是触发事件
6passive:事件的而默认行为立即实行,无需等待事件回调执行完毕

6键盘事件

vue按键别名
回车enter,
删除delete
退出esc
空格space
换行tab
上up
下down
left.right

注意:

系统修饰键(用法特殊):ctrl、alt、shift、meta

配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发
配合keydown使用:正常触发事件
可以使用keyCode去指定具体的按键,比如:@keydown.13=“showInfo”,但不推荐这样使用

Vue.config.keyCodes.自定义键名 = 键码,可以自定义按键别名

8姓名案例
9计算属性

拿已经写完的属性加工成计算生成全新属性
data写属性
computed计算新属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./js/vue.js"></script>
</head>
<body>
    <div id="root">
        姓:<input type="text" v-model="firstname"><br>
        名: <input type="text" v-model="lastname">
        <br>全名:<span>{{fullname}}</span>
    </div>
    <script>
        const vm = new Vue({
            el:'#root',
            data:{
                firstname:'张',
                lastname:'san'
            },
            computed:{
                fullname:{ //只要调用fullname就会执行
                    get(){
                        console.log('调用了getter')
                        return this.firstname+'-_-'+this.lastname
                    }
                }
            }
                
        })
    </script>
</body>
</html>

10计算属性简写

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

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

相关文章

如何从Outlook向Teams共享电子邮件

从 Outlook 或 web 上的 Outlook,你可以将电子邮件共享到Teams中的聊天和频道。 注意: 你必须具有“共享到Teams”的Outlook”加载项。它为Teams用户自动安装。此外,移动设备当前不支持该功能。外接程序当前不支持共享邮箱。如果你安装了Teams桌面客户端,并且使用的是Outl…

精、稳、敏、融,步入人民金融时代 | 易观银行业数字化转型年度趋势报告

易观分析&#xff1a;2022年&#xff0c;在深化金融供给侧结构性改革和高质量增长要求的指引下&#xff0c;赋能实体、公平普惠、审慎经营成为银行业转型发展的关键词。一方面面临内外部复杂的经济环境和不确定性风险&#xff0c;银行主打稳健策略&#xff0c;数字化转型仍在持…

软件测试用例篇(5)

测试是否运行代码去划分&#xff1f; 1)静态测试: 不运行代码&#xff0c;检查代码的风格&#xff0c;格式是否符合公司的标准规范&#xff0c;检查代码的逻辑结构是否满足需求要实现的功能 看代码&#xff0c;不运行代码&#xff0c;通过静态分析代码的语法&#xff0c;编写规…

谷歌Google Pixel6Pro/7pro手机刷入ROOT权限-开通Volte+破解5G网络高速刷机教程

谷歌pixel6和pixel7系列&#xff0c;出厂并不带volte功能&#xff0c;也不支持完美的5G效果&#xff0c;对于我们这种身处大陆&#xff0c;又想体验高清通话的小伙伴来说&#xff0c;并不友好&#xff0c;所以第三方破解实现就显得非常重要了。通过实际测试&#xff0c;两款机型…

Java 文件上传 MultipartFile RequestPart 方式上传 HttpClient

Java springboot/springCloud项目&#xff0c;后端接口是用RequestPart 注解MultipartFile类型和实体类型的参数&#xff0c;目的是同时提交文件和表单参数。前端调用方式&#xff1a;需要使用表单&#xff08;form-data&#xff09;方式进行提交&#xff0c;content-type设置为…

Hive排序,窗口函数

数据排序1&#xff0c;全局排序&#xff08;order by&#xff09;&#xff1a;类似于标准SQL&#xff0c;只使用一个Reducer执行全局数据排序&#xff1b;速度慢,应提前做好数据过滤 &#xff1b;支持使用case when或表达式&#xff1b;支持按位置编号排序desc升序&#xff0c;…

拉链表

每日的用户更新表获取的三种方式&#xff1a;一是监听mysql库数据的变化&#xff0c;比如用canal合并每日的变化&#xff0c;获取到最后的一个状态二是每天获得一份切片数据&#xff0c;可以通过去两天切片数据的不同来作为每日更新表&#xff0c;可以对所有字段先进性concat&a…

Pixhawk RPi CM4 Baseboard 树莓派CM4安装Ubuntu20.04 server 配置ros mavros mavsdk

文章目录硬件安装Ubuntu Server20.04下载rpiboot工具下载imager刷写系统配置USB配置WIFI开机安装桌面配置wifi配置串口安装ROS安装mavros安装MAVSDK-PythonInternet设置最后参考&#xff1a; https://docs.holybro.com/autopilot/pixhawk-baseboards/pixhawk-rpi-cm4-baseboard…

Linux下C/C++ 网络扫描(主机扫描技术)

主机扫描是网络扫描的基础&#xff0c;通过对目标网络中主机IP地址的扫描&#xff0c;从一堆主机中扫描出存活的主机&#xff0c;然后以他们为目标进行后续的攻击。一般会借助于ICMP、TCP、UDP等协议的工作机制&#xff0c;检查打开的进程&#xff0c;开放的端口号等等。 主机…

SpringBoot使用缓存

目录 简介 Spring 的缓存主要有如下几个注解 红色标注的注解为最常用的注解&#xff0c;必须熟练掌握 Cacheable/CachePut/CacheEvict 主要的参数 SpEL 提供的运算符 实现步骤 补充 注意 整合 EHCACHE 简介 Spring 框架已经具备了缓存机制&#xff0c;虽然我们可以使用 …

Locust框架从0到1入门

Locust介绍 Locust是使用Python语言编写实现的开源性能测试工具&#xff0c;可以用来测试Web应用程序、API、数据库等各种应用程序的性能&#xff0c;使用起来简洁、轻量、高效&#xff0c;并发机制基于gevent协程&#xff0c;可以实现单机模拟生成较高的并发压力。中文意为&a…

【目标检测】正负样本分配策略

YOLO v3 目标的中心点在哪个网格内由该网格负责预测该目标&#xff0c;max-iou matching策略 &#xff08;1&#xff09;计算GT的中心点在哪个网格&#xff1b; &#xff08;2&#xff09;计算该网格内的所有anchor与GT的IOU&#xff0c;选择IOU最大的anchor负责预测该GT&…

嵌入安防监控项目——BOA服务器的移植

目录 一、源码下载 1.1 boa简介&#xff1a; 1.2BOA再项目中的使用 二、解压源码&#xff1a; 三、进入源码目录下的src目录&#xff1a; 四、make 编译源码&#xff1a; 五、建立安装目录 六、返回boa的顶层目录 --- 修改配置文件 七、建立测试页面 八、查看/boa目…

43-Golang中的goroutine!!!

Golang中的goroutine进程和线程说明并发和并行并发并行Go协程和Go主线程案例小结goroutine的调度机制MPG模式基本介绍MPG模式运行的状态1MPG模式运行的状态2设置GOlang运行的CPU数不同 goroutine之间如何通讯使用全局变量加锁同步改进程序进程和线程说明 1.进程就是程序在操作…

robosuite添加无碰撞的模型

1 前言 最近在使用robosuite时,需要在仿真环境中可视化物体的目标位置,从而方便观察训练情况,可视化的物体有以下要求: 形状尺寸与操作的物体一样半透明只有visual,不与场景其他物体有碰撞可以在每次step后设置位置,且固定在设定的位置,不受重力影响 2 方法 找了半天,最终确…

javaWeb核心04-CookieSession

文章目录会话技术1&#xff0c;会话跟踪技术的概述2&#xff0c;Cookie2.1 Cookie的基本使用2.2 Cookie的原理分析2.3 Cookie的使用细节2.3.1 Cookie的存活时间2.3.2 Cookie存储中文3&#xff0c;Session3.1 Session的基本使用3.2 Session的原理分析3.3 Session的使用细节3.3.1…

2018年MathorCup数学建模D题公交移动支付问题的评估方案解题全过程文档及程序

2018年第八届MathorCup高校数学建模挑战赛 D题 公交移动支付问题的评估方案 原题再现&#xff1a; 随着智能手机的普及和移动支付技术的提高,越来越多的支付手段可以转移到手机端。现有的现金缴费和实体公交卡刷卡的付费方式存在缺点&#xff0c;如公交卡在使用过程中存在着充…

Landsat8中*_MTL.txt文件详解

01 什么是*_MTL.txt文件&#xff1f;所有的Landsat8 1级数据产品中均包含MTL.txt(Metadata File)文件。Landsat MTL文件包含对数据的系统搜索和归档分类有益的信息。该文件还包含关于数据处理和恶对增强陆地卫星数据有重要价值的信息&#xff08;例如转换为反射率和辐射亮度&am…

Java 集合进阶(二)

文章目录一、Set1. 概述2. 哈希值3. 元素唯一性4. 哈希表5. 遍历学生对象6. LinkedHashSet7. TreeSet7.1 自然排序7.2 比较器排序8. 不重复的随机数二、泛型1. 概述2. 泛型类3. 泛型方法4. 泛型接口5. 类型通配符6. 可变参数7. 可变参数的使用一、Set 1. 概述 Set 集合特点&am…

AI领域通识

人工智能的架构&#xff1a;通常来说&#xff0c;人工智能架构分为四层&#xff1a;最底层的基础层一般由软硬件设施以及数据服务组成。软件设施主要包括智能云平台和大数据平台&#xff0c;比如国外的谷歌大数据平台和国内的百度智能云平台等&#xff1b;硬件设施主要包括CPU硬…