计算属性、事件绑定、条件判断、遍历循环

计算属性:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script>
</head>
<body><div id="app"><h3>用户信息</h3><div >姓名:{{userInfo.name}}</div><div >性别:{{userInfo.sex}}</div><div >性别:{{getSexLable}}</div><!-- 这个表示函数的调用 [Vue warn]: Error in render: "TypeError: getSexLable2 is not a function"报错 其实这个 getSexLable 在Vue内部像是一个方法,但不是一个方法func--><!-- <div >性别:{{getSexLable2(userInfo.sex)}}</div> --><!--重点分析:第一步getSexLable3这个前面部分会先去调用计算属性,这个时候会返回一个我们声明的匿名函数体,那么我就可以直接拿来调用,因为我返回的是function所以我才能够通过()括号调用函数的形式传参等执行--><div >性别:{{getSexLable3(userInfo.sex)}}</div></div></body><script>// 后端数据库一般存 0 1 代表男 女  Vue有专门的东西可以计算属性将数据做一个转换var s=new Vue({el:"#app",// 数据存放区data(){return{// 现在有两份数据 用户的基本信息userInfo:{name:"隔壁",sex:'0'},// 性别字典值 业务层面上这种值不会变,我如果要的话我找它拿就行了sexDict:[{code:'1',label:'男'},{code:'0',label:'女'}],name:'xxx'}},// 计算属性computed:{// 这是一个函数的形式 es6的增强语法。然后我们可以把这个方法名当做是变量名去使用getSexLable(){// 简单使用 // 在这里我只知道一份信息,在Vue实例中 除了data外 ,访问别的区域的时候,需要带上this// 但是这种Switch方法只能适应很小很小的场景 扩展能力差,并不是那么好用  但也是一种方式switch(this.userInfo.sex){case '1':return '男';break;case '0':return '女';break;}return '未知';},//该方法我希望它能够传值 ,所以该方法不可取getSexLable2(sexCode){console.log('the people`s sex is'+sexCode);},// 因为上面我这个方法行不通那么就 return一个function(){} 然后就好比在调用一个函数// 必须要有返回值getSexLable3(){return function (sexCode) {// 然后我们只根据这个code进行判断 无需再this.通过区域去拿值。我无需再关心我内部实现的逻辑怎么样,我只需要调用传值// 开发层级上经常用switch (sexCode) {case '1':return '男';break;case '0':return '女';break;} }}// 记住不仅该计算属性有这样的方法 而且它还有缓存的效果,每次监听到传入值变化的时候,会去对比前一次return的值,// 如果说相同就不会再去更新页面上的内容,可以达到减少开销的效果// 但是如果return 的是function可能会去重新计算 问题不大 开销一点点罢了}})
</script>
</html>

事件绑定:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script>
</head>
<body><div id="app"><!-- 我们vue中要绑定事件的话 就跟前面一节课一样 声明一个指令就行了 记住函数要在js里面声明.记住不传参可以不用写参数 --><button v-on:click="handler">按钮</button><!-- 以后都用下面这种写法 然后click等号右边可以是逻辑代码 --><button @click="num++">{{num}}</button><!-- 可以传参 $event:如果我们要用event建议通过参数的形式传递然后直接打印。是关键字。正常不会失效,也没有什么情景去拿事件对象--><button @click="handler(1,2,3,$event)">按钮</button><!-- -------------------------------------------------- --><!-- 条件判断  补充我们虽然学过属性绑定 但是我们不一定都通过事件的绑定去拿值,只是说有些变量需要通过绑定才拿到值采取,就是说这个值是变化的才去绑定比如father我就是固定好的属性值所以无需再去绑定 什么的,有点多此一举的行为--><!-- 以前我们父子级别中同样的事件行为 当孩子点击的时候 父亲也会触发  --><div class="father" style="border: 1px solid black; " @click="log">父亲<!-- 直接点stop就行了 --><div class="child" style="border: 1px solid black;" @click.stop="log">孩子</div></div></div>
</body>
<script>var s =new Vue({el:"#app",data(){return{num:0}},//  声明一个Methodsmethods:{handler(...rest){console.log(event);console.log(event.target);// vue的事件里面 this 不指向事件源 永远指向Vue实例对象// 如果非要获取事件源DOM可以通过事件的target属性console.log(this.num);console.log('jsikdsds');// 参数 console.log(rest);},log(){console.log('dont touch me again OK??????' );}}})
</script>
</html>

条件判断:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script>
</head>
<body><div id="app"><!-- 我可以通过条件去判断该标签的显示和隐藏 让用户看起来还是一样的效果 --><div class="sex"><!-- 这个意思是如果sex等于1我就返回男 否则就返回女 if-else这个系列是在做节点操作 删除创建 --><!--v-if 右边只要有值就行 会自动转为 bool类型 比较方便  --><span class="man a1" v-if="userInfo.sex==2" @click="handler">男</span><!-- 记住else之一块 不是说不会显示 而是不会被创建 --><span class="woman a2" v-else @click="handler">女</span><!-- 优化先取个类名 --></br><!-- 我们有些标签是经常需要显示和隐藏的 如果频繁的进行节点删除和创建 对浏览器的开销是挺大的 --><!-- 所以有个指令是v-show  是通过css的display:none来控制的--><span class="man a3" v-show="userInfo.sex==1" @click="handler">男</span><!-- 记住else之一块 不是说不会显示 而是不会被创建 --><span class="woman a4" v-show="userInfo.sex==0" @click="handler">女</span><!-- 页面频繁切换显示隐藏 推荐使用v-show 如果是一些权限控制系统推荐使用v-if --><!-- 刚刚在控制台通过document.querySelector()发现 a1能被选到 但是 a2为空;a3,a4都能被选到(这样是很危险的)只要节点存在就可以通过控制台或者外挂一个脚本 。所以权限控制的推荐使用v-if--></div></div></body>
<script>var s=new Vue({el:"#app",data(){return{userInfo:{sex:'1'}}},methods:{handler(){console.log('xxxxxxxxxxxxxxxxxxxxxxxxxx');}}})
</script>
</html>

条件遍历:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./vue.js"></script>
</head>
<body><!-- Vue是跟着数据走的记住// 我们可以遍历循环出数据来  --><div id="app"><h1>遍历数组(常用)</h1><!-- v-for 的语法比较特殊 item:表示当前的遍历项   具有局部作用域。因为我这里产生了遍历项 text找不到它的遍历项然后就去找data里面--><div class="card" v-for="item in cardList">{{item}}{{text}}</div><!-- 遍历数组对象  Vue能够把对象转成文本显示 我如果要用值直接. 一般都是通过该方式--><div class="pop" v-for="item in peopList">{{item.name}}</div><!-- 默认第二项是获取下标 可以省略掉-->·<div class="pop" v-for="(item,index) in peopList">{{item.name}}{{index}}</div><!-- 遍历字符串 --><div class="str" v-for="charone in text">{{charone}}</div><!-- 遍历数字 --><div class="number" v-for="(n,index) in 5">{{n}}</div><div>------------------------------------</div><!-- 遍历对象  记住 遍历的是每一个键的值 正常开发这个也常用牢记 遍历对象这个是键值对不是下标--><div class="obj" v-for="(ob,index) in bro">{{ob}}{{index}}</div><!-- 当使用`v-for`指令时,需要在该标签上写上`key`属性,并且理想的 key 值是每项唯一,以便vue实例能跟踪每个节点的身份,从而重用和重新排序现有元素。通常会使用属性绑定,对其赋值;不建议使用`index`值 --><!-- 遍历对象  记住 遍历的是每一个键的值 正常开发这个也常用牢记 遍历对象这个是键值对不是下标每一个v-for 写一个key 不能被定死 尽量不要用index 这样会导致代码执行完会有很多key都是相同的所以写v-for记得带上key 有些节点 因为v-for是遍历那些数组 串联出来的节点 下一次数组如果更新,vue会检测到数据变化会重新遍历一次 有些节点数据没变 你给了key Vue抓到之后 可以减少一些没有必要的重复遍历 提高性能 减少一些奇怪的bug 估计不会出现--><div>------------------------------</div><div class="obj" v-for="(ob,index) in bro" :key="ob+index">{{ob}}{{index}}</div></div></body><script>const s=new Vue({el:"#app",data(){return{cardList:[1,2,3,4,44],peopList:[{name:'zs',age:'12'},{name:'ls',age:'12'}],text:'hello world',bro: {name:"xiaomi",price:'1222'}}}})//   数组检测更新 Vue会捕捉到数据的变化 然后重新遍历数组 新增一项 Vue重写了push 自动更新页面上的内容 必须用Vue的setTimeout(() => {// s.peopList.push({name:"kk",age:'13'})// 通过这样的方式改变值 Vue是不会更新的视图上 无法被Vue捕捉并更新到视图上s.cardList[0]=9// 提供了全局的一个方法 第一个填我要更新的数据目标 第二个填下标 第三个填我要更新的值  三秒钟自己变了 ¥set一定能够保证数据的变化和视图的变化s.$set(s.cardList,0,10000)}, 3000);
</script>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从开源代码入场无人机学术研究到商业化市场的全路径指南-优雅草卓伊凡

从开源代码入场无人机学术研究到商业化市场的全路径指南-优雅草卓伊凡 引言&#xff1a;开源代码在无人机研究中的重要性 优雅草卓伊凡在这里告诉大家&#xff0c;如果真的要开始进入无人机领域&#xff0c;我们需要一步步开始研究。目前先去看看开源无人机代码是尤为重要的&…

window11中开启ubuntu22.04子系统

一、启用Windows子系统 打开控制面板 选择程序然后点击“启用或关闭Windows功能” 勾选如下2项&#xff0c;点击确定 二、安装内核升级包 打开链接https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi下载内核升级包&#xff0c;打开后安装、重启电脑…

80Qt窗口_对话框

目录 5. 对话框 5.1 对话框介绍 用例1&#xff1a; 用例2&#xff1a; 用例3&#xff1a; 用例4&#xff1a; 5.2 对话框的分类 5.2.1 模态对话框 5.2.2 ⾮模态对话框 5. 对话框 5.1 对话框介绍 对话框是 GUI 程序中不可或缺的组成部分。⼀些不适合在主窗⼝实现的功…

Pyenv 跟 Conda 还有 Poetry 有什么区别?各有什么不同?

pyenv、Conda 和 Poetry 是 Python 生态中常用的工具&#xff0c;但它们的核心功能和用途不同&#xff0c;通常可以结合使用。以下是它们的区别和特点&#xff1a; 1. pyenv 用途&#xff1a;管理多个 Python 解释器版本。 核心功能&#xff1a; 安装不同版本的 Python&#x…

数学符号和标识中英文列表(含义与示例)

数学符号和标识的参考&#xff0c;涵盖了数学的各个主要分支&#xff0c;并提供清晰的定义和示例&#xff0c;方便快速查找和学习收藏。 目录 基础数学符号几何符号代数符号线性代数符号概率与统计符号集合论符号逻辑符号微积分与分析符号数字与字母符号 特点 中英对照&…

「Java流程控制」switch结构

知识点解析 1.switch结构的核心概念 switch语句是一种多分支选择结构,它根据表达式的值来选择执行不同的代码块。与if-else结构相比,switch更适合处理离散的、有限个值的比较。 2.switch结构的基本语法 switch (表达式) {case 值1:// 代码块1[break;]case 值2:// 代码块…

从0开始学习R语言--Day27--空间自相关

有的时候&#xff0c;我们在数据进行分组时&#xff0c;会发现用正常的聚类分析的方法和思维&#xff0c;分组的情况不是很理想。其实这是因为我们常常会忽略一个问题&#xff1a;假设我们正在分析的数据是真实的&#xff0c;那么它也肯定在一定程度上符合客观规律。而如果我们…

Excel将表格文件由宽数据转为长数据的方法

本文介绍基于Excel软件的Power Query模块&#xff0c;实现表格数据由宽数据转为长数据的具体方法。 长数据和宽数据是数据分析中的2种基本数据组织形式&#xff0c;二者在结构、用途、适用场景等方面各有特点。其中&#xff0c;宽数据 &#xff08;Wide Format&#xff09;以“…

SpringAI + DeepSeek大模型应用开发 - 入门篇

三、SpringAI Spring AILangChain4jChat支持支持Function支持支持RAG支持支持对话模型1515向量模型1015向量数据库1520多模态模型51JDK178 1. 对话机器人 1.1 快速入门 步骤①&#xff1a;引入依赖&#xff08;先去掉openai的starter依赖&#xff0c;因为要配置API_KEY&#…

ROS docker使用显卡驱动rviz gazebo,以及接入外设和雷达

ROS docker使用显卡驱动rviz gazebo&#xff0c;以及接入外设和雷达 由于我的电脑装ubuntu22.04系统&#xff0c;想使用ros noetic开发&#xff0c;使用鱼香ros一键安装docker安装。但是启动dockek中rviz无法使用显卡驱动&#xff0c;usb相机端口不显示&#xff0c;网口雷达无…

ruoyi后端框架的mapper层复杂字段数据获取问题

背景。如下是复杂字段。需要在mapper.java类注解中声明autoResultMap true才会进行处理。前提是&#xff0c;创建后端程序代码没有添加mapp.xml文件。故用注解简化代替。

产品推荐|一款具有单光子级探测能力的科学相机千眼狼Gloria 1605

在生命科学超分辨率成像、量子物理单光子探测、交叉领域单分子追踪等应用场景中&#xff0c;具有单光子级探测能力的科学相机是科学实验的关键设备。 千眼狼Gloria 1605采用16μm16μm大像元尺寸设计&#xff0c;基于Gpixel科学级背照式CMOS芯片&#xff0c;集成千眼狼底层图像…

JS.Day2-堆选(Py)/三路快排-快速选择-215,11,560,21,128,20,121

目录 215.找第k大元素 三路的快速排序 快速选择 法2.堆选 &#xff08;堆排序&#xff09; 11.盛更多水的容器 代码1 代码2 560.和为K的子数组&#xff08;题意&#xff01;&#xff09; 惯性思维 正解 21.合并生序链表 递归写法 128.最长连续序列 20.有效的括号…

第8章 处理几何图形 面向 ArcGIS的Python脚本编程

一、折点坐标(.txt 或 .xlsx 或 .xls) > 点线面图层(.shp) &#xff08;一&#xff09;.xlsx 或 .xls > .shp 新建一个文件夹&#xff0c;连接到该文件夹&#xff0c;并将其设置为工作空间 在该文件夹下&#xff0c;新建一个pts.xlsx的文件&#xff0c;并输入下图内容 …

使用(h3.js)绘制六角网格码

今天来记录一篇关于h3.js插件库的使用&#xff0c;他可以很高效的计算出地球上某个经纬度坐标六边形顶点。 前段时间领导突然给我个售前功能&#xff0c;要求是使用h3.js插件在地球上绘制出六边形网格码&#xff0c;本来以为挺棘手的&#xff0c;结果看完文档后发现也挺简单的…

GO 1.25

Go 1.25 发布说明&#xff08;草案&#xff09; Go 1.25 尚未发布。 本文档是正在编写中的发布说明。Go 1.25 预计于 2025 年 8 月发布。 语言变更 Go 1.25 中没有影响 Go 程序的语法变更。然而&#xff0c;在语言规范中&#xff0c;“核心类型”&#xff08;core types&…

解析Android SETUP_DATA_CALL 链路信息字段

Android 对象返回的log信息经常都不是标准的JSON字符串,排查字段不直观,比如下面的日志: 06-13 15:56:36.204 8076 8407 D RILJ : [1655]> SETUP_DATA_CALL,reason=NORMAL,accessNetworkType=EUTRAN,dataProfile=[DataProfile=[ApnSetting] IMS, 2318, 310260, ims,…

跨语言RPC:使用Java客户端调用Go服务端的HTTP-RPC服务

在构建分布式系统时&#xff0c;实现不同编程语言之间的无缝通信是一个常见的需求。本文将详细介绍如何使用Go语言创建一个HTTP-RPC服务&#xff0c;并通过Java客户端进行远程调用。我们将探索整个过程&#xff0c;包括服务端的实现、客户端的编写以及测试验证。 一、背景介绍…

CVPR2024迁移学习《Unified Language-driven Zero-shot Domain Adaptation》

摘要 本文提出了一个名为 Unified Language-driven Zero-shot Domain Adaptation&#xff08;ULDA&#xff09;的新任务设置&#xff0c;旨在使单一模型能够适应多种目标领域&#xff0c;而无需明确的领域标识&#xff08;domain-ID&#xff09;知识。现有语言驱动的零样本领域…

AI安全风险监测平台:全周期防护体系构建

AI安全风险监测平台通过构建全生命周期防护体系&#xff0c;实现对人工智能系统研发、部署、运行、迭代各阶段的安全风险动态监测。该平台融合算法审计、行为分析、合规验证等核心能力&#xff0c;建立覆盖模型安全、数据安全、应用安全的立体防御网络&#xff0c;为智能系统提…