当前位置: 首页 > news >正文

Vue02

Vue指令补充

<!-- v-model.trim 去除文本前后的空格,只保留没有前后空格的文本内容 v-model.number 将文本中可以转成number的字符串变成字符串 -->

<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .box{ width: 200px; height: 200px; border: 3px solid black; font-size: 30px; margin-top: 10px; } .pink{ background-color: pink; } .big{ width: 300px; height: 300px; } </style> </head> <body> <div id="app"> <div class="box" v-bind:class="{pink:true,big:false}" > 盒子1 </div> <div class="box" v-bind:class="['pink','big']"> 盒子2 </div> </div> </body>

v-bind导航栏菜单切换

<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; } ul { display: flex; border-bottom: 2px solid #e01222; padding: 0 10px; } li { width: 100px; height: 50px; line-height: 50px; list-style: none; text-align: center; } li a { display: block; text-decoration: none; font-weight: bold; color: #333333; } li a.active { background-color: #e01222; color: #fff; } </style> </head> <body> <div id="app"> <ul> <!-- @click单击事件里面可以动态去获取选中的下标 --> <!-- 高亮判定条件,当前列表项下标等于选中列表项的下标 --> <li v-for="(item,index) in list" :key="item.id" @mouseover="activeIndex=index"> <a :class="{active:index===activeIndex}" href="">{{item.name}}</a> </li> </ul> </div> </body> <script src="js/vue.js"></script> <script> const v = new Vue({ el:"#app", data:{ activeIndex:4, list:[ {id:1,name:"京东秒杀"}, {id:2,name:"每日特价"}, {id:3,name:"品类秒杀"} ] } }) </script>

v-bind控制行内样式

v-model作用域其他表单上

<!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"> <h3>个人信息注册</h3> 姓名: <input type="text" v-model="username"> <br><br> 是否单身: <input type="checkbox" v-model="isSingle"> <br><br> <!-- 前置理解: 1. name: 给单选框加上 name 属性 可以分组 → 同一组互相会互斥 2. value: 给单选框加上 value 属性,用于提交给后台的数据 结合 Vue 使用 → v-model --> 性别: <input v-model="gender" type="radio" name="sex" value="1">男 <input v-model="gender" type="radio" name="sex" value="2">女 <br><br> <!-- 前置理解: 1. option 需要设置 value 值,提交给后台 2. select 的 value 值,关联了选中的 option 的 value 值 结合 Vue 使用 → v-model --> 所在城市: <select v-model="cit"> <option value="bj">北京</option> <option value="sh">上海</option> <option value="cd">成都</option> <option value="nj">南京</option> </select> <br><br> 自我描述: <textarea v-model="desc"></textarea> <button>立即注册</button> </div> <script src="js/vue.js"></script> <script> Vue.config.devtools = true; const app = new Vue({ el: '#app', data: { username:'', isSingle: false, gender:1, city: '', desc:'' } }) </script> </body> </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> </head> <body> <div id="app"> <h3>礼物清单</h3> <table> <tr> <td>名字</td> <td>数量</td> </tr> <tr v-for="(item,index) in list"> <td>{{item.name}}</td> <td>{{item.num}}个</td> </tr> </table> <!-- 目标:统计总和,使用computed统计总数,使用函数名称一定不要带"()" --> <p>礼物总数:{{gettotalcount}}</p> </div> </body> <script src="js/vue.js"></script> <script> Vue.config.devtools = true; const v = new Vue({ el:"#app", data:{ list:[ {id:1,name:"篮球",num:1}, {id:2,name:"玩具",num:2}, {id:3,name:"铅笔",num:5}, ] }, computed:{ gettotalcount(){ //定义计算逻辑,将list中的num取出进行累加 return this.list.reduce((sum,item)=>sum + item.num,0) } } }) </script> </html>

简而言之,methods的函数方法每次调用都会执行一次,computed会使用缓存,一次刷新最多执行一次

<body> <div id="app"> 姓:<input type="text" v-model="firstName"><br> 名:<input type="text" v-model="lastName"><br> <p>姓名:{{fullName}}</p> <button @click="changeName()">修改姓名</button> </div> <script src="js/vue.js"></script> <script> const app = new Vue({ el: '#app', data: { firstName: '', lastName:'' }, methods:{ changeName(){ this.fullName = "张小飞" } }, computed: { //定义计算属性 获取结果 /* fullName(){ return this.firstName + this.lastName } */ fullName:{ get(){ return this.firstName + this.lastName }, set(value){ this.firstName = value.slice(0,1); this.lastName = value.slice(1); } } } }) </script> </body>

set方法会在调用=时,将=后面的内容当作value传入

<!DOCTYPE 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> </head> <body> <div id="app"> 监听简单的数据:<input type="text" v-model="username"> 监听对象的属性:<input type="text" v-model="user.name"> </div> </body> <script src="js/vue.js"></script> <script> Vue.config.devtools = true; const vue = new Vue({ el:"#app", data:{ username:'eric', user:{name:'kobe'} }, watch:{ //监听简单的数据 username(newValue,oldValue){ console.log('新值:',newValue,'旧值:',oldValue) }, //监听对象的属性 'user.name'(n1,n2){ console.log('新值:',n1,'旧值:',n2) } } }) </script> </html>

<!DOCTYPE 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> </head> <body> <div id="app"> 监听简单的数据:<input type="text" v-model="username"> 监听对象的属性:<input type="text" v-model="user.name"> 深度监听:<input type="text" v-model="emp.empname"> <input type="text" v-model="emp.address"> </div> </body> <script src="js/vue.js"></script> <script> Vue.config.devtools = true; const vue = new Vue({ el:"#app", data:{ username:'eric', user:{name:'kobe'}, emp:{ empname:"jass",address:"USA" } }, computed:{ newEmp(){ return JSON.stringify(this.emp); } }, watch:{ //监听简单的数据 username(newValue,oldValue){ console.log('新值:',newValue,'旧值:',oldValue) }, //监听对象的属性 'user.name'(n1,n2){ console.log('新值:',n1,'旧值:',n2) }, //深度监听 "newEmp":{ handler(nv,ov){//nv:属性值发生变化的对象 ov:原来的值对应的对象 console.log("新:", JSON.stringify(nv),"旧:",JSON.stringify(ov)); }, deep:true, //开启深度监听 immediate:true, //开启立即监听 } } }) </script> </html>
http://www.jsqmd.com/news/978075/

相关文章:

  • 探索Python在数据科学中的关键应用及未来趋势(07)
  • 数字示波器参数大全:从入门到精通(一)
  • 指令周期:一条指令是怎么被执行的?
  • 从Excel到‘一张图’办案:手把手教你用AbutionGraph为基层民警搭建智能案件线索分析平台
  • 石家庄空调移机怎么选?2026年5家公司全面对比 - 本地品牌推荐
  • 技术深度解析:Jasminum - Zotero中文文献管理的架构设计与实现
  • 使用JavaBean计算三角形面积和周长
  • 从近年外贸出海实操案例看海外云搭外贸独立站的落地细节
  • Python读取光谱仪数据的完整代码示例
  • 2026年q2达州门窗定制厂家实测评测:达州家装门窗设计/达州封窗/达州断桥铝门窗/谁更靠谱 - 优质品牌商家
  • 基于深度学习YOLOv8的白细胞类型检测系统(YOLOv8+YOLO数据集+UI界面+Python项目源码+模型)
  • 终极SPT-AKI存档编辑器完全指南:简单快速修改你的单机塔科夫存档 [特殊字符]
  • 后 | 室 Backrooms
  • 实战指南 | 企业Geo运营方法论:AI搜索优化实战指南
  • 告别混乱:用Apollo配置中心统一管理Spring Boot多环境配置(附Idea/Eclipse实战)
  • 2026年新能源类本科院校技术办学实力实测与推荐:航空办学特色大学推荐/航空航天类大学推荐/优选推荐 - 优质品牌商家
  • Java final 关键字精讲:变量、方法与类的终极约束
  • 30岁的女人适合考个什么证
  • MyBatis-Plus 分页查询实战
  • 面向对象设计(OOP)核心思想与 Java 实践总结
  • 食品异物赔偿协商录音泄露,舆情处置时沟通记录别踩坑
  • 丰田电动SUV热销,为何此时却放缓电动化步伐?
  • 2026 推荐|OpenClaw 全平台部署包,Windows/Mac 通用
  • 河南工科类院校技术维度实测:安阳工学院核心竞争力解析 - 优质品牌商家
  • 掌握Agent技术,抢占高薪先机!小白程序员必备收藏指南
  • FinalShell密码忘了别慌!手把手教你从本地文件找回服务器密码(附Java解密脚本)
  • 2026年企业门户管理平台推荐
  • 别再只用v-if了!用Vue3自定义指令实现这3个超实用的业务场景(附完整代码)
  • 2026年迪拜公司注册权威机构排行:危险化学品许可证/吉尔吉斯斯坦公司注册/哈萨克斯坦公司注册/合规服务对比 - 优质品牌商家
  • 深度学习泛化性的几何视角与嵌入空间分析