Vue指令(下)
参考文献:
Vue的快速上手
Vue指令上
文章目录
- Vue指令(下)
- v-bind
- v-bind小案例
- v-for
- v-for小案例
- v-for中的key
- v-model
- 结语
博客主页: He guolin-CSDN博客
关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长!
嗨!收到一张超美的图, 愿你每天都能顺心!
v-bind
1.作用:动态的设置html的标签属性 -> src,url,title等等
2.语法:v-bind:属性名=“表达式”(注:也可以直接简写成:属性名=“表达式”)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<img :src="imgUrl" alt="">
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
data: {
imgUrl:'./img/1.png'//切换成你的图片真实地址
}
})
</script>
</body>
</html>
这串代码用于动态的设置我们的图片的地址
v-bind小案例
接下来我们对上述讲过的vue指令做一个小案例。
首先我们准备了六张图片,在页面中只展示一张图片,通过点击上一页或者下一页来切换图片。
核心思路分析:
1.数组存储图片路径->[图片1,图片2,图片3,…]
2.准备下标index,数组[下标] -> v-bind设置src展示图片 -> 修改下标切换图片
接下来来看代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<button v-show="index > 0" @click="index--">上一页</button>
<div>
<img :src="list[index]" alt="">
</div>
<button v-show="index < list.length - 1" @click="index++">下一页</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
data: {
index:0,
list:[
'./picture/1.png',
'./picture/2.png',
'./picture/3.png',
'./picture/4.png',
'./picture/5.png',
'./picture/6.png',
]
}
})
</script>
</body>
</html>
v-show=“index > 0”:当图片不为第一张时显示上一页的按钮
@click=“index–”:点击上一页按钮时,控制数组下标来切换图片,其他同理。
接下来我们来看下效果
v-for
1.作用:基于数据循环,多次渲染整个元素 ->数组、对象、数字。
2.遍历数组语法:v-for=“(item,index) in 数组”。item每一项,index下标
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<h1>水果店</h1>
<p v-for="(item,index) in list">{{item}}</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
data: {
list:[
"西瓜","苹果","香蕉"
]
}
})
</script>
</body>
</html>
这样我们就对数组内的水果进行了循环遍历渲染。
v-for小案例
制作一个简易的小书架,可以将书架中已经阅读的书删掉。
明确需求:
1.基本渲染 v-for
2.删除功能
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<h1>书架</h1>
<div v-for="(item,index) in booklist" :key="item.id">
<p>{{item.name}}{{item.author}} <button @click="del(item.id)">删除</button> </p>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
data: {
booklist:[
{ id: 1, name: '《红楼梦》', author: '《曹雪芹》' },
{ id: 2, name: '《西游记》', author: '《吴承恩》' },
{ id: 3, name: '《水浒传》', author: '《施耐庵》' },
{ id: 4, name: '《三国演义》', author: '《罗贯中》' },
]
},
methods:{
del(id){
//filter:根据条件,保留满足条件的对应项,这里是所有和id不相等的都保留下来,并重新赋值。
this.booklist = this.booklist.filter(item => item.id !== id)
}
}
})
</script>
</body>
</html>
这样我们就做出了一个删除功能的小书架
v-for中的key
语法:key属性=“唯一标识”
作用:给列表项添加的唯一标识。便于Vue进行列表的正确排序复用。
我们给上述代码第一个标签设置个颜色。
以上面的代码为例子,如果我们不加key,实际就是把最后一个删掉了,并将其他的往上移动,并不会改变第一个p标签所带有的颜色。
但是我们加上了key,就相当于对每个p标签加上了唯一标识,这样就知道我们删除的具体是那个p标签的内容。因此以后写代码都会将key加上。
注意点:
1.key的值只能是字符串或数字类型
2.key的值必须具有唯一性
3.推荐使用id作为key(唯一),不推荐使用index作为key(会变化,不对应)
v-model
1.作用:给表单元素使用,双向数据绑定->可以快速获取或设置表单元素内容
- 1.数据变化 -> 视图自动更新
- 2.视图变化 -> 数据自动更新
2.语法:v-model=“变量”
下面是一个v-model双向获取的实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
账户:<input type="text" v-model="username"><br>
密码:<input type="password" v-model="password"><br>
<button @click="login">登录</button>
<button @click="reset">重置</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
<script>
const app = new Vue({
el: "#app",
data: {
username:"",
password:""
},
methods:{
login(){
console.log(this.username,this.password);
},
reset(){
this.username = "",
this.password = ""
}
}
})
</script>
</body>
</html>
通过v-model我们在视图上修改,或者在代码块修改都可以改变username的值或者password值,这样,登录就是需要获取视图上修改的账号和密码,重置只需要将他们重新赋值未空即可,接下来我们来看下这串代码的效果。
结语
本次分享就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区留言,如果给小伙伴们带来了一些收获,请留下你的小赞,你的点赞和关注将会成为博主分享每日学习的动力。