第3章 内置指令_第1页
第3章 内置指令_第2页
第3章 内置指令_第3页
第3章 内置指令_第4页
第3章 内置指令_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Vue.js3从入门到实战(微课视频版)第3章内置指令学习目的与要求本章主要讲解Vue.js内置指令,包括v-bind、v-if、v-show、v-for、v-on、v-model等指令。通过本章的学习,掌握Vue内置指令的用法。《Vue.js3从入门到实战》陈恒主编,清华大学出版社目录3.1v-bind3.2条件渲染指令3.3列表渲染指令v-for3.4事件处理3.5表单与v-model3.6实战:购物车实例《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.1v-bindVue.js提供了v-bind指令绑定HTML元素的属性,并可动态更新属性值。《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.1.1v-bind指令用法v-bind的基本用途是动态更新HTML元素上的属性,比如id、class等。【例3-1】使用v-bind指令绑定超链接的href属性和图片的src属性。《Vue.js3从入门到实战》陈恒主编,清华大学出版社<script>Vue.createApp({data(){return{myurl:{baiduUrl:'/',imgUrl:'images/ok.gif'}}}}).mount('#app')</script><divid="app"><av-bind:href="myurl.baiduUrl">去百度</a><imgv-bind:src="myurl.imgUrl"/><!--v-bind:可缩写为“:”,这种缩写称为语法糖--><a:href="myurl.baiduUrl">去百度</a><img:src="myurl.imgUrl"/></div>3.1.2使用v-bind绑定class1.对象语法传给:class(v-bind:class的简写)一个对象,可以动态地切换class属性值。示例代码如下:

<div:class="{active:isActive}"></div>可以在对象中传入更多字段来动态切换多个class。此外,:class指令也可以与普通的class属性同时存在。示例代码如下:<divclass="static":class="{active:isActive,'text-danger':hasError}"></div>《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.1.2使用v-bind绑定class2.数组语法当需要多个class时,可以把一个数组与:class绑定,以应用一个class列表。示例代码如下:<div:class="[activeClass,errorClass]"></div>如果需要根据条件切换列表中的class,可以使用三元表达式实现。示例代码如下:<div:class="[isActive?activeClass:'',errorClass]"></div>《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.1.2使用v-bind绑定class3.数组中嵌套对象当有多个条件class时,在数组中使用三元表达式有些繁琐。所以在数组语法中也可以使用对象语法。示例代码如下:<div:class="[{'active':isActive},errorClass]"></div>《Vue.js3从入门到实战》陈恒主编,清华大学出版社【例3-2】绑定class的几种方式。《Vue.js3从入门到实战》陈恒主编,清华大学出版社【例3-3】将methods的返回值动态绑定到class属性。3.1.3使用v-bind绑定style使用:style可以给HTML元素绑定内联样式,方法与:class类似,也有对象语法和数组语法。:style的对象语法十分直观,看起来像在元素上直接写CSS,但其实是一个JavaScript对象。CSS属性名可以用驼峰式或短横线分隔来命名。《Vue.js3从入门到实战》陈恒主编,清华大学出版社【例3-4】绑定style的方式。《Vue.js3从入门到实战》陈恒主编,清华大学出版社【例3-5】将computed属性值动态绑定到style属性。目录3.1v-bind3.2条件渲染指令3.3列表渲染指令v-for3.4事件处理3.5表单与v-model3.6实战:购物车实例《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.2.1v-if指令与JavaScript的条件语句if、else、elseif类似,Vue.js的条件指令v-if也可以根据表达式的值渲染或销毁元素/组件。【例3-6】使用条件渲染指令判断成绩等级。《Vue.js3从入门到实战》陈恒主编,清华大学出版社<divid="if-handling"><divv-if="score>=90">优秀</div><divv-else-if="score>=80">良好</div><divv-else-if="score>=70">中等</div><divv-else-if="score>=60">及格</div><divv-else>不及格</div></div><script>Vue.createApp({data(){return{

score:87}}}).mount('#if-handling')</script>3.2.1v-if指令v-if条件渲染指令必须将它添加到一个元素上。但是如果想包含多个元素呢?此时可以使用<template>元素(模板占位符)帮助我们包裹元素,并在上面使用v-if。最终的渲染结果将不包含<template>元素。《Vue.js3从入门到实战》陈恒主编,清华大学出版社<templatev-if="ok"> <h1>Title</h1> <p>Paragraph1</p> <p>Paragraph2</p></template>3.2.2v-show指令v-show指令的用法基本与v-if一样,也是根据条件展示元素,例如:<h1v-show="yes">一级标题</h1>。不同的是,v-if每次都会重新删除或创建元素,而带有v-show的元素始终会被渲染并保留在DOM中,只是切换元素的display:none样式。所以,v-if有更高的切换消耗,而v-show有更高的初始渲染消耗。因此,如果需要频繁切换,v-show较好;如果在运行时条件不大可能改变,v-if较好。另外,v-show不支持<template>元素,也不支持v-else。《Vue.js3从入门到实战》陈恒主编,清华大学出版社【例3-7】演示v-if与v-show的区别。《Vue.js3从入门到实战》陈恒主编,清华大学出版社目录3.1v-bind3.2条件渲染指令3.3列表渲染指令v-for3.4事件处理3.5表单与v-model3.6实战:购物车实例《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.3.1基本用法可以使用v-for指令遍历一个数组或对象,它的表达式需结合in来使用,形式为iteminitems,其中items是源数据,而item是被迭代集合中元素的别名。v-for还支持一个可选的参数作为当前项的索引。《Vue.js3从入门到实战》陈恒主编,清华大学出版社 1.遍历普通数组

<ul> <liv-for="(item,index)initems"> {{index}}-{{item}} </li> </ul>2.遍历对象数组<ul> <liv-for="userinusers"> {{user.uname}} </li></ul>3.3.1基本用法3.遍历对象属性<liv-for="(value,key,index)inmyObject"> {{++index}}.{{key}}:{{value}}</li>4.迭代数字<liv-for="iin100">{{i}}</li>【例3-8】演示v-for指令的常用方式。《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.3.2数组更新Vue.js框架的核心是数据与视图的双向绑定,所以使用v-for循环遍历并渲染数组时,数组变化将触发视图更新。push()方法可向数组的末尾添加一个或多个元素,并返回新的长度。pop()方法用于删除并返回数组的最后一个元素。unshift()方法可向数组的开头添加一个或更多元素,并返回新的长度。shift()方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。splice()方法用于添加或删除数组中的元素。如果仅删除一个元素,则返回一个元素的数组。如果未删除任何元素,则返回空数组。sort()方法用于对数组的元素进行排序。排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序。reverse()方法用于颠倒数组中元素的顺序。《Vue.js3从入门到实战》陈恒主编,清华大学出版社【例3-9】数组更新时,v-for渲染的视图也更新。《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.3.3过滤与排序有时,需要显示一个经过过滤或排序后的数组,而不实际变更或重置原始数据。在这种情况下,可以使用计算属性来返回过滤或排序后的数组。《Vue.js3从入门到实战》陈恒主编,清华大学出版社【例3-10】使用计算属性过滤与排序数组,并使用v-for指令渲染过滤与排序后的数组。【例3-11】使用methods过滤二维数组中大于100的元素,并使用嵌套v-for指令循环渲染过滤的结果。《Vue.js3从入门到实战》陈恒主编,清华大学出版社目录3.1v-bind3.2条件渲染指令3.3列表渲染指令v-for3.4事件处理3.5表单与v-model3.6实战:购物车实例《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.4.1使用v-on指令监听事件所有的事件处理都离不开事件监听器,在Vue.js中可以使用v-on指令给HTML元素添加一个事件监听器,通过该指令调用在Vue实例中定义的方法。【例3-12】使用v-on指令监听按钮事件,实现字符串反转。《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.4.2使用$event访问原生的DOM事件在Vue.js中,有时需要访问原生的DOM事件。Vue.js提供了一个特殊变量$event,用于访问原生的DOM事件。【例3-13】阻止打开链接。《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.4.3事件修饰符在事件处理中调用event.preventDefault()或event.stopPropagation()是非常常见的需求。尽管可以在方法中轻松实现这类需求,但方法最好只有纯粹的数据逻辑,而不是去处理DOM事件细节。为解决该问题,Vue.js为v-on提供了事件修饰符。修饰符是由点开头的指令后缀表示。Vue.js支持的修饰符有.stop、.prevent、.capture、.self、.once以及.passive。用法是在@绑定的事件后加小圆点“.”,再跟修饰符。《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.4.3事件修饰符<!--阻止单击事件--><a@click.stop="doThis"></a><!--提交事件不再重载页面--><form@submit.prevent="onSubmit"></form><!--修饰符可以串联--><a@click.stop.prevent="doThat"></a><!--只有修饰符--><form@submit.prevent></form>《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.4.3事件修饰符<!--添加事件监听器时使用事件捕获模式,即内部元素触发的事件先在此处理,然后才交由内部元素进行处理--><div@click.capture="doThis">...</div><!--当事件在该元素自身触发时触发回调,即事件不是从内部元素触发的--><div@click.self="doThat">...</div><!--只触发一次--><a@click.once="doThis"></a><!--滚动事件的默认行为(即滚动行为)将会立即触发,而不会等待“onScroll”完成--><div@scroll.passive="onScroll">...</div>《Vue.js3从入门到实战》陈恒主编,清华大学出版社目录3.1v-bind3.2条件渲染指令3.3列表渲染指令v-for3.4事件处理3.5表单与v-model3.6实战:购物车实例《Vue.js3从入门到实战》陈恒主编,清华大学出版社3.5.1基本用法表单用于向服务器传输数据,较为常见的表单控件有:单选、多选、下拉选择、输入框等,用表单控件可以完成数据的录入、校验、提交等。Vue.js用v-model指令在表单<input>、<textarea>及<select>元素上创建双向数据绑定(Model到View以及View到Model)。使用v-model指令的表单元素将忽略该元素的value、checked、selected等属性初始值,而是将当前活动的Vue实例的数据作为数据来源。所以,使用v-model指令时,应通过JavaScript在Vue实例的data选项中声明初始值。《Vue.js3从入门到实战》陈恒主编,清华大学出版社【例3-14】v-model指令在表单元素上实现双向数据绑定。《Vue.js3从入门

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论