在 Vue 中判断条件,咱可以用 v-if
,意思就是「如果 xxx 的话,那就 xxx」。当满足条件,也就是条件返回 true 的时候,就可以做它要做的事情了。
案例 1
比如,我们想看一个「大靓仔」,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello Vue</title>
<!-- 其实,就一句即实现引入 Vue.js -->
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<!-- 第六步,展示数据 -->
<div id="root"></div>
</body>
<script>
// 第一步,创建一个 Vue 的实例
Vue.createApp({
// 第二步,提供一个 data 选项
// 提供 seen 来保存一个 bool 值
data() {
return {
seen: true
}
},
// 第四步,在 methods 中提供对应方法
methods: {
showAndHide(){
// 切换 bool 值
this.seen = !this.seen
}
},
// 第三步,在页面提供一个标签和一个按钮
// 按钮控制 seen 的值
template:`
<div>
<span v-if="seen">我是一个「大靓仔」^_^</span>
</div>
<p>
<div><button v-on:click="showAndHide">显示/隐藏靓仔</button></div>
`
}).mount('#root');
</script>
</html>
运行效果:
关于「条件判断」先做一个简单的了解,更多实战案例,后面拿更多案例来分析。
我们再来了解一下 Vue 中的「循环」,咱可以用 v-for
来循环遍历出数组中的元素 。
案例 2
一个小案例,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello Vue</title>
<!-- 其实,就一句即实现引入 Vue.js -->
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<!-- 展示数据 -->
<div id="root"></div>
</body>
<script>
// 第一步,创建一个 Vue 的实例
Vue.createApp({
// 第二步,提供一个 data 选项
// 提供 poetry 数组来保存诗句内容,并返回
data() {
return {
poetry : [
{
text : '红豆生南国,'},
{
text : '春来发几枝。'},
{
text : '愿君多采撷,'},
{
text : '此物最相思。'}
]
}
},
// 第三步,在页面提供一个标签和一个列表
// 其中列表用来展示诗句内容
template:`
<div>
<span>你听过 王维 的《相思》吗?</span>
</div>
<ol>
<li v-for="p in poetry">
{
{ p.text }}
</li>
</ol>
`
}).mount('#root');
</script>
</html>
运行效果:
Vue 还提供了 v-model
指令,它能轻松实现表单输入和应用状态之间的双向绑定。比如,我们来写一个「花名登记册」吧。
案例 3
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello Vue</title>
<!-- 其实,就一句即实现引入 Vue.js -->
<script src="https://unpkg.com/vue@next"></script>
</head>
<body>
<!-- 展示数据 -->
<div id="root"></div>
</body>
<script>
// 第一步,创建一个 Vue 的实例
Vue.createApp({
// 第二步,提供一个 data 选项
// 提供 userName 用来获取输入的用户名
// 提供 userNameList 数组用来收集所有输入的名字,循环展示
data() {
return {
userName : '',
userNameList:[]
}
},
methods: {
// 第四步,实现 RecordName() 方法,记录用户名
RecordName(){
this.userNameList.push(this.userName);
this.userName = '';
}
},
// 第三步,在页面提供一个输入框、一个按钮和一个列表
// 输入框,用于接受用户输入的用户名,通过 v-model 能将表单输入的用户名与 data 中的 userName 双向绑定
// 按钮,绑定 RecordName() 方法,将用户名保存至 userNameList 数组中,且再将输入框清空
// 列表,用来展示所有用户名
template:`
<div>
请输入用户名:<input v-model="userName" /> |
<button v-on:click="RecordName">登记用户名</button>
</div>
<ul>
<li v-for="(name, index) in userNameList">
这是第 {
{ index + 1 }} 名客户,名字是「 {
{ name }}」
</li>
</ul>
`
}).mount('#root');
</script>
</html>
运行效果: