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

Vue中常用指令——(详解,并附有代码)

文章目录

  • 一.指令合集
    • 1.0 概述
    • 1.1 插值表达式
    • 1.2 v-text/v-html
    • 1.3 v-show/ v-if
    • 1.4 v-on
      • 1.4.1 内联语句
      • 1.4.2 事件处理函数
    • 1.5 v-bind
    • 1.6 Test
    • 1.7 v-for

一.指令合集

  • 内容渲染指令(v-html、v-text)
  • 条件渲染指令(v-show、v-if、v-else、v-else-if)
  • 事件绑定指令(v-on)
  • 属性绑定指令 (v-bind)
  • 双向绑定指令(v-model)
  • 列表渲染指令(v-for)

1.0 概述

  1. el:指定挂载点
  2. data提供数据

1.1 插值表达式

{{ }}:插值表达式是一种Vue的模板语法

<div id="app"><p>{{ nickname }}</p><p>{{ nickname.toUpperCase() }}</p><p>{{ nickname + '你好' }}</p><p>{{ age >= 18 ? '成年' : '未成年' }}</p><p>{{ friend.name }}</p><p>{{ friend.desc }}</p></div><script src="js/vue.js"></script><script>const app = new Vue({el: '#app',data: {nickname: 'Tom',age: 66,friend: {name: 'Tim',desc: '热爱学习java'}}})</script>

1.2 v-text/v-html

v-text(类似innerText)

  • 语法:<p v-text="username">hi</p>,意思是将 username值渲染到 p 标签中
  • 类似 innerText,使用该语法,会覆盖 p 标签原有内容

v-html(类似 innerHTML)

  • 使用语法:<p v-html="showInfo">hi</p>,意思是将 showInfo值渲染到 p 标签中
  • 类似 innerHTML,使用该语法,会覆盖 p 标签原有内容
  • 类似 innerHTML,使用该语法,能够将HTML标签的样式呈现出来。
<body><div id="app"><h2>个人信息</h2><p v-text="username">姓名:</p><p v-html="intro">简介:</p></div><script src="js/vue.js"></script><script>const app = new Vue({el: '#app',data: {username: '张三',intro: '<h2>这是一个<strong>非常优秀</strong>的boy<h2>'}})</script>
</body>

1.3 v-show/ v-if

v-show

  • 作用: 控制元素显示隐藏
  • 语法: v-show = “表达式” 表达式值为 true 显示, false 隐藏
  • 原理: 切换 display:none 控制显示隐藏
  • 场景:频繁切换显示隐藏的场景

v-if

  • 作用: 控制元素显示隐藏(条件渲染)
  • 语法: v-if= “表达式” 表达式值 true显示, false 隐藏
  • 原理: 基于条件判断,是否创建 或 移除元素节点
  • 场景: 要么显示,要么隐藏,不频繁切换的场景
<style>.box {width: 200px;height: 100px;border: 1px red solid;}
</style><body><div id="app"><div v-show="flag" class="box">v-show 隐藏</div><div v-if="flag" class="box">v-if 隐藏</div></div><script src="js/vue.js"></script><script>const app = new Vue({el: '#app',data: {flag: false}})</script>
</body>

v-else 和 v-if-else

<body><div id="app"><p v-if="gender === 1">性别:♂ 男</p><p v-else>性别:♀ 女</p><hr><p v-if="score >= 90">优秀</p><p v-else-if="score >= 70"></p><p v-else-if="score >= 60">及格</p><p v-else>不及格</p></div><script src="js/vue.js"></script><script>const app = new Vue({el: '#app',data: {gender: 2,score: 90}})</script></body>

1.4 v-on

  • <button v-on:事件名=“内联语句”>按钮
  • <button v-on:事件名=“处理函数”>按钮
  • <button v-on:事件名=“处理函数(实参)”>按钮
  • v-on: 可简写为 @

1.4.1 内联语句

    <div id="app"><!-- 内联语句 --><button @click="count--">-</button><span>{{ count }}</span><button v-on:click="count++">+</button></div><script src="js/vue.js"></script><script>const app = new Vue({el: '#app',data: {count: 100}})</script>
</body>

1.4.2 事件处理函数

  • 事件处理函数应该写到一个跟data同级的配置项(methods)中

  • methods中的函数内部的this都指向Vue实例

  • 不传参

<body><div id="app"><button @click="fn">切换显示隐藏</button><h1 v-show="isShow">java</h1></div><script src="js/vue.js"></script><script>const app = new Vue({el: '#app',data: {isShow: true},methods: {fn() {this.isShow = !this.isShow}}})</script>
</body>
  • 传参数
<style>.box {border: 3px solid #000000;padding: 20px;margin: 20px;width: 200px;}
</style><body><div id="app"><div class="box"><button @click="buyFunctiuon(6)">面包6元</button><button @click="buyFunctiuon(3)">饮料3元</button><button @click="buyFunctiuon(9)">牛奶9元</button></div><p>余额:{{ money }}元</p></div>
</body>
<script src="js/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {money: 88},methods: {buyFunctiuon(price) {// this.money = this.money - price;this.money -= price}}})
</script>

1.5 v-bind

  • 作用:动态设置html的标签属性 比如:src、url、title
  • 语法:v-bind:属性名=“表达式”
  • v-bind:可以简写成 :
<body><div id="app"><img v-bind:src="imgUrl" :title="msg" alt=""><img :src="imgUrl" :title="msg" alt=""></div>
</body>
<script src="js/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {imgUrl: "../code/day01/imgs/10-01.png",msg: "nihao"}})
</script>
<body><div id="app"><h1 v-bind:title="message">{{ message }}</h1><button v-on:click="changeMessage">Change Message</button></div>
</body>
<script src="js/vue.js"></script>
<script>new Vue({el: '#app',data: {message: 'Hello Vue!'},methods: {changeMessage: function() {this.message = 'Message has been changed!';}}});
</script>

1.6 Test

<body><div id="app"><button v-show="index > 0" @click="index--">上一个</button><img :src="list[index]" alt=""><button v-show="index<list.length-1" @click="index++">下一个</button>
</div></body>
<script src="js/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {index: 0,list: [//此处可换成自己的文件夹下的图片路径'./imgs/11-00.gif','./imgs/11-01.gif','./imgs/11-02.gif','./imgs/11-03.gif','./imgs/11-04.png','./imgs/11-05.png',]}})
</script>

1.7 v-for

v-for 指令需要使用 (item, index) in arr 形式的特殊语法,其中:

  • item 是数组中的每一项
  • index 是每一项的索引,不需要可以省略
  • arr 是被遍历的数组
<body><div id="app"><ul><li v-for="(item,index) in list">{{item}}-{{index}}</li></ul><ul><li v-for="item in list">{{item}}</li></ul><!-- 遍历数字 --><p v-for="item in 10">{{item}}</p><!-- 遍历对象 --><div v-for="(value, key, index) in object">{{value}}</div><!--value:对象中的值 key:对象中的键index:遍历索引从0开始 --></div></body>
<script src="js/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {list: ['你', '好', '啊']}})
</script>
http://www.lryc.cn/news/458235.html

相关文章:

  • redistemplate实现点赞相关功能
  • C++ 算法学习——7.4.1 优化算法——双指针
  • 镁光DDR3的命名
  • [Git] Git下载及使用 从入门到精通 详解(附下载链接)
  • Linux源码阅读笔记-USB驱动分析
  • 【超级详细解释】力扣每日一题 134.加油站 48. 旋转图像
  • 数据挖掘基本架构知识点
  • LangChain中使用Prompt01
  • 如何使用bpmn-js实现可视化流程管理
  • 【PostgreSQL 】实战篇——如何使用 EXPLAIN 和 ANALYZE 工具分析查询计划和性能,优化查询
  • List、Map、Set 三个接口存取元素时,各有什么特点
  • 掌握 ASP.NET Web 开发:从基础到身份验证
  • 【C++图文并茂】01背包问题不会?超详细的详解,看完保证你会
  • SQL自学:什么是子查询,如何使用它们
  • No.10 笔记 | PHP学习指南:PHP数组掌握
  • RS-232 串口通信和 RS-485 串口通信的区别
  • 【K8s】专题十四(1):Kubernetes 安全机制之 RBAC
  • 8. 多态、匿名内部类、权限修饰符、Object类
  • CentOS/Ubuntu/Debian安装LibeventCentOS安装Libevent库(含示例代码)库(含示例代码)
  • 【大数据】数据采集工具sqoop介绍
  • vite学习教程02、vite+vue2配置环境变量
  • k8s 的网络通信
  • 【编程基础知识】掌握Spring MVC:从入门到精通
  • 多线程下,@Transactional失效解决
  • PyCharm 项目解释器切换指南:如何在项目中更换 Python Interpreter
  • STM32F407寄存器操作(DMA+SPI)
  • Oracle 的 OCP 与 MySQL 的 OCP 的区别
  • 数据治理、数据清洗定义、区别以及数据清洗常用方法
  • web基础-攻防世界
  • Java基础-String Class(字符串类)