条件渲染指令: v-if、v-else-if、v-else:可以根据表达式的值在DOM中渲染或销毁元素/组件,与v-show不同的是,v-if是真正的条件渲染,适合条件不经常变更的场景;而v-show只是简单的CSS属性切换,使用于频繁切换条件。
v-if举例:
<div id = "app">
<p v-if="status === 1">当status为1时显示该行</p>
<p v-else-if="status === 2">当status为2时显示该行</p>
<p v-else>否则显示该行</p>
</div>
<script>
var app = new Vue({
el : '#app',
data:{
status:1
}
})
</script>
v-show举例:
<div id = "app">
<p v-show="status === 1">当status为1时显示该行</p>
</div>
<script>
var app = new Vue({
el : '#app',
data:{
status:2
}
})
</script>
列表渲染指令:v-for:当需要将一个数组遍历或枚举一个对象循环显示时,会用到列表渲染指令v-for,结合in来使用
举例:
<div id = "app">
<ul>
<li v-for="book in books">
{{book.name}}
</li>
</ul>
</div>
<script>
var app = new Vue({
el : '#app',
data:{
books:[
{ name : 'Vue.js'},
{ name : 'JavaScript'},
{ name : 'HTML5+CSS3'},
]
}
})
</script>
条件与循环结合的一个综合例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<!-- 通过cdn引入vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<style type="text/css">
.container {
display: flex;
}
.card {
width: 20opx;
height: 200px;
margin-right: 30px;
border: 1px solid #EEEEEE;
border-radius: 10px;
}
.card img {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<!-- vue-app根容器 -->
<div id="app">
<h2 v-if="show">显示图书信息</h2>
<div class="container">
<!-- 循环遍历books数组 -->
<div class="card" v-for="book in books">
<!-- 显示图片名称 -->
<h4>{{book.name}}</h4>
<img :src="book.cover">
<p v-if="book.like">喜欢</p>
<p v-else>不喜欢11</p>
</div>
</div>
</div>
<script type="text/javascript">
//实例化一个vue对象
var app = new Vue({
el: '#app',
data: {
show: true,
books: [
{
name: '夏日尽初',
cover: 'img/3.jpg',
like: true
},
{
name: '暴力与反暴力',
cover: 'img/2.jpg',
like: false
},
{
name: '黑鹤',
cover: 'img/4.jpg',
like: true
},
{
name: '且在人间',
cover: 'img/1.jpg',
like: true
}
]
}
})
</script>
</body>
</html>
运行结果

网友评论