Vue基本语法(三)

简介: Vue基本语法(三)

十二、v-for遍历数组



当我们有一组数据需要进行渲染时,我们就可以使用v-for来完成。


v-for的语法类似于JavaScript中的for循环。


格式如下:item in items的形式。


我们来看一个简单的案例:


如果在遍历的过程中不需要使用索引值


v-for="movie in movies"


依次从movies中取出movie,并且在元素的内容中,我们可以使用Mustache语法,来使用movie


如果在遍历的过程中,我们需要拿到元素在数组中的索引值呢?


语法格式:v-for=(item, index) in items


其中的index就代表了取出的item在原数组的索引值。


image.png

image.png

image.png

image.png


v-for遍历对象

v-for可以用户遍历对象:

比如某个对象中存储着你的个人信息,我们希望以列表的形式显示出来。


image.png

image.png


组件的key属性


官方推荐我们在使用v-for时,给对应的元素或组件添加上一个:key属性。

为什么需要这个key属性呢(了解)?


这个其实和Vue的虚拟DOM的Diff算法有关系。


这里我们借用React’s diff algorithm中的一张图来简单说明一下:


当某一层有很多相同的节点时,也就是列表节点时,我们希望插入一个新的节点

我们希望可以在B和C之间加一个F,Diff算法默认执行起来是这样的。


即把C更新成F,D更新成C,E更新成D,最后再插入E,是不是很没有效率?

所以我们需要使用key来给每个节点做一个唯一标识


Diff算法就可以正确的识别此节点


找到正确的位置区插入新的节点。


所以一句话,key的作用主要是为了高效的更新虚拟DOM。


image.png

image.png


image.png

image.png


image.png

image.png


image.png

image.png


十三、检测数组更新

因为Vue是响应式的,所以当数据发生变化时,Vue会自动检测数据变化,视图会发生对应的更新。

Vue中包含了一组观察数组编译的方法,使用它们改变数组也会触发视图的更新。


push()
pop()
shift()
unshift()
splice()
sort()
reverse()


image.png

image.png


十四、表单绑定v-model


表单控件在实际开发中是非常常见的。特别是对于用户信息的提交,需要大量的表单。

Vue中使用v-model指令来实现表单元素和数据的双向绑定。


案例的解析:


当我们在输入框输入内容时


因为input中的v-model绑定了message,所以会实时将输入的内容传递给message,message发生改变。


当message发生改变时,因为上面我们使用Mustache语法,将message的值插入到DOM中,所以DOM会发生响应的改变。


所以,通过v-model实现了双向的绑定。


当然,我们也可以将v-model用于textarea元素


image.png

image.png


image.png

image.png


v-model原理

v-model其实是一个语法糖,它的背后本质上是包含两个操作:

1.v-bind绑定一个value属性

2.v-on指令给当前元素绑定input事件


也就是说下面的代码:等同于下面的代码:


<input type="text" v-model="message">


等同于


<input type="text" v-bind:value="message" v-on:input="message = $event.target.value">


image.png

image.png


v-model:radio


当存在多个单选框时


image.png

image.png


v-model:checkbox

复选框分为两种情况:单个勾选框和多个勾选框


单个勾选框:


v-model即为布尔值。

此时input的value并不影响v-model的值。


多个复选框:


当是多个复选框时,因为可以选中多个,所以对应的data中属性是一个数组。

当选中某一个时,就会将input的value添加到数组中。


image.png

image.png


image.png

image.png


v-model:checkbox


复选框分为两种情况:单个勾选框和多个勾选框


单个勾选框:


v-model即为布尔值。

此时input的value并不影响v-model的值。


多个复选框:


当是多个复选框时,因为可以选中多个,所以对应的data中属性是一个数组。

当选中某一个时,就会将input的value添加到数组中。


image.png

image.png


image.png

image.png


v-model:checkbox


复选框分为两种情况:单个勾选框和多个勾选框


单个勾选框:

v-model即为布尔值。

此时input的value并不影响v-model的值。


多个复选框:


当是多个复选框时,因为可以选中多个,所以对应的data中属性是一个数组。

当选中某一个时,就会将input的value添加到数组中。


image.png

image.png


image.png

image.png


v-model:select

和checkbox一样,select也分单选和多选两种情况。

单选:只能选中一个值。


v-model绑定的是一个值。

当我们选中option中的一个时,会将它对应的value赋值到mySelect中

多选:可以选中多个值。


v-model绑定的是一个数组。

当选中多个值时,就会将选中的option对应的value添加到数组mySelects中


image.png

image.png


image.png

image.png


image.png

image.png


值绑定


初看Vue官方值绑定的时候,我很疑惑:what the hell is that?


但是仔细阅读之后,发现很简单,就是动态的给value赋值而已:


我们前面的value中的值,可以回头去看一下,都是在定义input的时候直接给定的。

但是真实开发中,这些input的值可能是从网络获取或定义在data中的。


所以我们可以通过v-bind:value动态的给value绑定值。


这不就是v-bind吗?


这不就是v-bind在input中的应用吗?搞的我看了很久,搞不清他想将什么。

这里不再给出对应的代码,因为会用v-bind,就会值绑定的应用了。


修饰符


lazy修饰符:


默认情况下,v-model默认是在input事件中同步输入框的数据的。


也就是说,一旦有数据发生改变对应的data中的数据就会自动发生改变。

lazy修饰符可以让数据在失去焦点或者回车时才会更新:


number修饰符:


默认情况下,在输入框中无论我们输入的是字母还是数字,都会被当做字符串类型进行处理。


但是如果我们希望处理的是数字类型,那么最好直接将内容当做数字处理。


number修饰符可以让在输入框中输入的内容自动转成数字类型:


trim修饰符:


如果输入的内容首尾有很多空格,通常我们希望将其去除

trim修饰符可以过滤内容左右两边的空格


image.png


image.png



相关文章
|
5天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
vue学习第四章
|
5天前
|
JavaScript 前端开发
vue学习第九章(v-model)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript与Vue的大一学生,自学前端2年半,正向全栈进发。此篇介绍v-model在不同表单元素中的应用及修饰符的使用,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
vue学习第九章(v-model)
|
5天前
|
JavaScript 前端开发 开发者
vue学习第十章(组件开发)
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文深入讲解Vue组件的基本使用、全局与局部组件、父子组件通信及数据传递等内容,适合前端开发者学习参考。持续更新中,期待您的关注!🎉🎉🎉
vue学习第十章(组件开发)
|
10天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
11天前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
11天前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
11天前
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
|
10天前
|
JavaScript 前端开发 UED
vue学习第二章
欢迎来到我的博客!我是一名自学了2年半前端的大一学生,熟悉JavaScript与Vue,目前正在向全栈方向发展。如果你从我的博客中有所收获,欢迎关注我,我将持续更新更多优质文章。你的支持是我最大的动力!🎉🎉🎉
|
12天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
10天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,熟悉JavaScript与Vue,正向全栈方向发展。博客内容涵盖Vue基础、列表展示及计数器案例等,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉