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



相关文章
|
1天前
|
JavaScript
Ant design Vue 父子组件传递(代码案例--不懂的地方可以私信本博主)
Ant design Vue 父子组件传递(代码案例--不懂的地方可以私信本博主)
5 0
|
1天前
|
JavaScript 前端开发
ant design vue 配置菜单外部打开
ant design vue 配置菜单外部打开
4 0
|
1天前
|
JavaScript
ant design vue 在列表中使用插槽 例如当性别为0的时候在列表中我想显示男
ant design vue 在列表中使用插槽 例如当性别为0的时候在列表中我想显示男
4 0
|
1天前
|
JavaScript 前端开发
vue 实现在线预览PDFpdf文件
vue 实现在线预览PDFpdf文件
5 0
|
1天前
|
JavaScript
vue下拉列表
vue下拉列表
5 0
vue下拉列表
|
1天前
|
JavaScript 前端开发 API
vue与jqyery的区别
vue与jqyery的区别
|
2天前
|
JavaScript 前端开发 UED
Vue工具和生态系统: Vue.js和服务器端渲染(SSR)有关系吗?请解释。
Vue.js是一个渐进式JavaScript框架,常用于开发单页面应用,但其首屏加载较慢影响用户体验和SEO。为解决此问题,Vue.js支持服务器端渲染(SSR),在服务器预生成HTML,加快首屏速度。Vue.js的SSR可手动实现或借助如Nuxt.js的第三方库简化流程。Nuxt.js是基于Vue.js的服务器端渲染框架,整合核心库并提供额外功能,帮助构建高效的应用,改善用户体验。
4 0
|
3天前
|
Web App开发 JavaScript 开发者
Vue工具和生态系统:什么是Vue DevTools?如何使用它?
Vue Devtools是Vue.js官方的浏览器扩展,用于简化应用调试和优化。可在Chrome和Firefox等浏览器上安装,集成到开发者工具中。安装步骤包括下载源码、npm安装、修改manifest.json并加载编译后的扩展。启用后,开发者能查看Vue组件树,检查属性,并在允许的情况下编辑data,提升开发效率。
5 0
|
4天前
|
JavaScript 测试技术
vue不同环境打包环境变量处理
vue不同环境打包环境变量处理
13 0
|
4天前
|
JavaScript
Vue Steps步骤组件用法
Vue Steps步骤组件用法
12 0