《Vue 3基础入门》课件 第三章Vue 3基本指令_第1页
《Vue 3基础入门》课件 第三章Vue 3基本指令_第2页
《Vue 3基础入门》课件 第三章Vue 3基本指令_第3页
《Vue 3基础入门》课件 第三章Vue 3基本指令_第4页
《Vue 3基础入门》课件 第三章Vue 3基本指令_第5页
已阅读5页,还剩25页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

Vue3基本指令Contents目录条件渲染指令01列表渲染指令v-for02数据绑定指令v-bind03v-model与表单0401条件渲染PARTVue3基本指令0102条件渲染指令条件渲染指令的主要功能是根据指令的值为true或false进而触发组件不同的表现形式。指令的主要职责是在其值发生改变时,将相应的影响作用于DOM对象。<divid="app"><h1v-if="display">Display</h1><h1v-if="hide">Hide</h1><h1v-if="age>=25">Age:{{age}}</h1><h1v-if="name.indexOf('Tom')>=0">Name:{{name}}</h1></div><script>constvm=Vue.createApp({data(){return{display:true,hide:false,age:28,name:'TomCruise'}}}).mount('#app');</script>右侧代码使用v-if、v-else-if和v-else,这三个指令用于实现条件判断,在true和false之间切换时,元素或组件将被销毁或重建。v-if、v-else-if、v-else渲染结果将age属性的值修改为20(即vm.age=20),然后切换回元素窗口,渲染结果如图

注意0102如需控制多个元素的创建或删除,可以使用<template>元素将这些元素包装起来,然后在<template>元素上使用v-if指令。<divid="app"><templatev-if="!isIogin"><form><p>username:<inputtype="text"></p><p>password:<inputtype="password"></p></form></template></div>

<script>constvm=Vue.createApp({data(){return{isLogin:false}}}).mount('#app');</script>需要特别注意的是:当一个条件被满足时,后续的条件判断都不会再执行,v-else-if和v-else需要紧跟在v-if或v-else-if之后。Vue3基本指令0102条件渲染指令条件渲染指令的主要功能是根据指令的值为true或false进而触发组件不同的表现形式。指令的主要职责是在其值发生改变时,将相应的影响作用于DOM对象。<divid="app"><h1v-show="display">Display</h1><h1v-show="hide">Hide</h1><h1v-show="age>=25">Age:{{age}}</h1><h1v-show="name.indexOf('Tom')>=0">Name:{{name}}</h1></div><script>constvm=Vue.createApp({data(){return{display:true,hide:false,age:28,name:'TomCruise'}}}).mount('#app');</script>v-show指令根据其值切换元素的CSS样式中的display属性,当条件变化时,该指令会触发过渡效果,代码如下。v-show指令V-show渲染结果从页面的展示效果来看,v-show与v-if似乎没有不同,但在页面结构中可以发现,v-show并没有根据条件不同而改变页面结构.v-show的值是true还是false,v-show指令都会创建元素,它通过CSS样式中的display属性来控制元素是否显示。当v-if的值为false时,v-if指令不会创建该元素。只有当v-if的值为true时,v-if指令才会真正创建该元素。02列表渲染PARTVue3基本指令0102列表渲染指令列表渲染指令的主要功能是根据数组的值来进行列表的遍历循环。从而快速的渲染html结构,使代码具有整洁性,开发的快速和便捷性。<ulid="array-rendering"><liv-for="iteminitems">{{item.message}}</li></ul><script>constvm=Vue.createApp({data(){return{items:[{message:'Foo'},{message:'Bar'}]}}}).mount('#app');</script>v-for指令基于一个数组来渲染一个列表。v-for指令需要使用iteminitems形式的特殊语法,其中items是源数据数组,item是被迭代的数组元素的别名,v-for指令V-show渲染结果在<li>元素上使用v-for指令遍历数组,这将循环渲染<li>元素。在v-for块中,可以访问所有父作用域的属性,item是数组中元素的别名,在每次循环时,item的值为数组当前索引的值,除此之外,v-for还支持一个可选的第二个参数,也可以用v-for来遍历一个对象的所有可枚举属性。<ulid="v-for-object"class="demo"><liv-for="valueofmyObject">{{value}}</li></ul>constvm=Vue.createApp({data(){return{myObject:{title:'HowtodolistsinVue',author:'JaneDoe',publishedAt:'2016-04-10'}}}}).mount('#app');Vue3基本指令02甚至可以增加第三个参数来获取索引,代码如下:<liv-for="(value,name,index)inmyObject">{{index}}.{{name}}:{{value}}</li>Vue3默认采用“就地更新”策略。如果数据项的顺序被更改,Vue3将不会移动页面元素来匹配数据项的顺序,而是就地更新每个元素,并确保它们在每个索引位置被正确渲染。建议在使用v-for指令时尽可能提供key值,这样可以提高v-for的渲染效率,v-for指令<divv-for="iteminitems":key="item.id"><!--内容--></div>Vue3基本指令0102列表渲染指令

列表渲染指令的主要功能是根据数组的值来进行列表的遍历循环。从而快速的渲染html结构,使代码具有整洁性,开发的快速和便捷性。<divid="app"><ulv-for="numbersinsets"><liv-for="nineven(numbers)":key="n">{{n}}</li></ul></div>

<script>constvm=Vue.createApp({data(){return{sets:[[1,2,3,4,5],[6,7,8,9,10]]}},methods:{even(numbers){returnnumbers.filter(number=>number%2===0)}}}).mount('#app');</script>v-for可以用来显示数组过滤或排序后的结果,如果要显示一个数组经过过滤或排序后的版本,而不改变原始数据,可以创建一个计算属性来返回处理后的数组v-for的其他操作v-for循环中无法使用计算属性,可以使用methods()函数来解决Vue3基本指令v-for也可以接受整数n进行作为迭代参数,在这种情况下模板会重复循环n次,代码如下:<ul><templatev-for="iteminitems":key="item.msg"><li>{{item.msg}}</li><liclass="divider"role="presentation"></li></template></ul>也可以利用带有v-for的<template>来循环渲染一段包含多个元素的内容,<divid="range"class="demo"><spanv-for="nin10":key="n">{{n}}</span></div>注意:当它们处于同一节点时,v-if的优先级比v-for更高,这意味着v-if将没有权限访问v-for中的变量<templatev-for="todointodos":key=""><liv-if="!todo.isComplete">{{}}</li></template>03数据绑定指令v-bindPARTVue3基本指令0102v-bind的主要作用是动态更新HTML元素上的属性,同时也可以动态绑定组件的props属性,也可以使用简写的符号“:”来代替它。<divid="app"><av-bind:href="url">前往百度</a></div>

<script>constvm=Vue.createApp({data(){return{url:''}}}).mount('#app');</script>下面示例中链接的href属性通过v-bind指令动态地设置,当数据发生变化时,组件会被重新渲染v-bind参数与数据绑定数据绑定指令v-bind动态绑定在这种情况下,v-bind指令不需要接收参数,可以直接使用,代码如下:<divid="app"><!--绑定一个有属性的对象--><formv-bind="form0bj"><inputtype="text"></form></div><script>constvm=Vue.createApp({data(){return{form0bj:{method:‘get’,action:‘#’}}}}).mount(‘#app’);</script>渲染结果Vue3官方提供了一个简写方式:bind<!--模板--><divid="red"v-bind="{id:'blue'}"></div><!--结果--><divid="blue"></div>

<!--模板--><divv-bind="{id:'blue'}"id="red"></div><!--结果--><divid="red"></div>04v-model与表单PARTVue3基本指令0102v-model指令用于在表单中的<input>、<textarea>和<select>元素上创建双向数据绑定,<divid="app"><inputtype="text"v-model="message"></div><script>constvm=Vue.createApp({data(){return{message:'HelloWorld'}}}).mount('#app');</script>渲染结果在开发者工具的控制台窗口中,输入vm.message='WelcometotheVueworld',可以看到v-model绑定的表达式数据发生改变,导致页面元素的值随之改变。数据双向绑定Vue3基本指令值绑定复选框

v-model指令用于在表单中的<input>、<textarea>和<select>元素上创建双向数据绑定.复选框。在使用单个复选框时,在<input>元素上可以使用两个特殊的属性true-value和false-value来指定选中状态下和未选中状态下v-model绑定的值<divid="app"><inputid="agreement"type="checkbox"v-model="isAgree"true-value="yes"false-value="no"><labelfor="agreement">{{isAgree}}</label></div>

<script>constvm=Vue.createApp({data(){return{isAgree:false}}}).mount('#app');</script>Vue3基本指令值绑定单选按钮v-model指令用于在表单中的<input>、<textarea>和<select>元素上创建双向数据绑定,负责监听用户的输入事件从而更新数据,并对一些极端场景进行特殊处理,单选按钮被选中时,v-model绑定的数据属性的值默认被设置为该单选按钮的value值。可以使用v-bind将<input>元素的value属性再绑定到另一个数据属性上,选中后的值就是这个value属性绑定的数据属性的值,代码如下:<divid="app"><inputid="male"type="radio"v-model="gender":value="genderVal[0]"><labelfor="male">男</label><br><inputid="female"type="radio"v-model="gender":value="genderVal[1]"><labelfor="female">女</label><br><span>性别:{{gender}}</span></div><script>constvm=Vue.createApp({data(){return{gender:'',genderVal:['男','女']}}}).mount('#app');</script>Vue3基本指令0102通过选择框选择内容后,其值是选项的值,即<option>元素的value属性的值。选项的value属性也可以使用v-bind指令绑定到一个数据属性上,代码如下:<selectv-model="selected"title="select"><!--内联对象字面量--><optionv-bind:value="{number:2022}">2023</option></select>或者将value属性绑定到一个对象字面量上,当选项被选中时,vm.selected.number的值会变更为2023,代码如下:<optionv-for="optioninoptions"v-bind:value="option.value"></option>选择框选项Vue3基本指令0102trim修饰符。用于自动过滤用户输入内容首尾两端的空格,使用v-model时,代码如下:<inputtype="text"v-model="inputValue"><p>{{inputValue}}</p><inputtype="text"v-model.trim="inputValue"><p>{{inputValue}}</p>运行结果如图lazy修饰符。用于将v-model的默认触发方式由input事件更改为change事件number修饰符。用于自动将用户输入的数据转换为数值类型,如果无法被parseFloat()转换,<inputtype="text"v-model.lazy="inputValue"><p>{{inputValue}}</p><inputtype="text"v-model.number="inputValue"><p>{{inputValue}}</p>修饰符Vue3基本指令方法、计算属性与监听属性<divid="app"><!--渲染DOM树--><h1style="color:seagreen;">{{title}}</h1><h2>Title:{{name}}</h2><h2>Topic:{{topic}}</h2><!--调用Vue3方法中的函数--><h2>{{show()}}</h2>

</div>

<script>constvm=Vue.createApp({data(){return{title:"GeeksforGeeks",name:"Vue.js",topic:"Instances"}},//创建组件中的Vue3方法methods:{//创建函数show:function(){return"欢迎尝试这个Vue例子"++"-"+this.topic;}}}).mount('#app');</script>运行效果如图0102Vue3基本指令0102计算属性

在模板中使用表达式非常方便,但如果表达式的逻辑比较复杂,使用计算属性会大大减少模板的复杂度,代码如下<divid="app"><p>{{message.split(").reverse().join(")}}</p></div>计算属性是以函数形式在computed选项中定义。可以使用计算属性来实现字符串反转的功能,代码如下<script>constvm=Vue.createApp({data(){return{message:'Hellol,welcometoVue!'}},//创建计算属性computed:{//计算属性的getterreversedMessage(){returnthis.message.split('').reverse().join('');}}}).mount('#app');</script><divid="app"><divid="app"><p>原始字符串:{{message}}</p><p>计算后的反转字符串:{{reversedMessage}}</p></div></div>Vue3基本指令运行结果如图计算属性默认只有getter,因此不能直接修改计算属性,如需修改可以参考以下代码:<script>constvm=Vue.createApp({data(){return{firstName:'Smith',lastName:"Will"}},//创建计算属性computed:{fullName:{//getter()函数get(){returnthis.firstName+''+this.lastName;},//setter()函数set(newValue){letnames=newValue.split('');this.firstName=names[0];this.lastName=names[names,length1];}}}}).mount('#app');</script><divid="app"><divid="app"><p>Firstname:<inputtype="text"v-model="firstName"></p><p>Lastname:<inputtype="text"v-model="lastName"></p><p>{{fullName}}</p></div></div>Vue3基本指令0102监听事件

v-on指令用于绑定

温馨提示

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

最新文档

评论

0/150

提交评论