当前位置: 首页 > 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.rkmt.cn/news/1489800.html

相关文章:

  • 数字示波器参数大全:从入门到精通(一)
  • 2026年q2达州门窗定制厂家实测评测:达州家装门窗设计/达州封窗/达州断桥铝门窗/谁更靠谱 - 优质品牌商家
  • 从近年外贸出海实操案例看海外云搭外贸独立站的落地细节
  • Python读取光谱仪数据的完整代码示例
  • 30岁的女人适合考个什么证
  • 食品异物赔偿协商录音泄露,舆情处置时沟通记录别踩坑
  • 2026年迪拜公司注册权威机构排行:危险化学品许可证/吉尔吉斯斯坦公司注册/哈萨克斯坦公司注册/合规服务对比 - 优质品牌商家
  • 小白程序员必备!3个月从零掌握大模型,附收藏版AI学习路线图
  • 前端超能力:让浏览器听你指挥——技术基石:Web API 的“听觉”与“理解”能力
  • C语言中的递归
  • Krita AI Diffusion项目解决SD3模型CLIP文件缺失问题的完整指南
  • 意图共鸣科技《AI记忆链商业化白皮书3.0》学习笔记:“AI焦虑的解药”=第二大脑+记忆主权
  • 大模型时代,小白也能入行!2026年AI岗必看指南,高薪收藏版
  • 零基础搭建本地 AI,OpenClaw Windows/macOS 落地实操
  • 终极音乐解放指南:如何使用qmc-decoder高效解密QQ音乐加密文件
  • 赤火时代的钛合金水淬炉好用吗? - myqiye
  • 选购玩具面料,安鹏纺织是您的不二之选 - myqiye
  • 修改liunx最大句柄数
  • 杭州大润发购物卡回收时效解析:技术流程与平台选择 - 优质品牌商家
  • 【环形缓冲区】1-概念与编程
  • 2026年,专业做实验台的厂家究竟有何独特之处?
  • 不锈钢板拉丝工艺解析与行业合规选型实测推荐:304不锈钢管/316l不锈钢焊管/316l不锈钢管/优选推荐 - 优质品牌商家
  • Agent到底是什么?大模型新焦点,小白程序员必看(收藏备用)
  • 陈刚直言|一条产线,三种制造模式:如何复用同一套软件?
  • 2026年净化工程公司如何选择 - 工业品牌热点
  • C语言pthread_create传参踩坑记:从‘-Wincompatible-pointer-types’警告到线程安全数据传递
  • 2026年LED显示屏哪家好用?性价比高的品牌排名 - myqiye
  • Linux进程控制学习总结(2/2)
  • 小米 mimo 邀请码 4EQMGN
  • ThinkPad风扇终极控制:TPFanControl2完全使用指南