指令 | 描述 |
---|---|
v-if | 条件性的渲染某元素,判定为true时渲染,否则不渲染 |
v-if-else | |
v-else | |
v-show | 根据条件展示某元素,区别在于切换的是display属性的值 |
我们直接通过代码来演示效果。在VS Code中创建名为15. Vue-指令-v-if和v-show.html的文件,提前准备好如下代码:
- 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>Vue-指令-v-if与v-showtitle>
- <script src="js/vue.js">script>
- head>
- <body>
- <div id="app">
-
- 年龄<input type="text" v-model="age">经判定,为:
- <span>年轻人(35及以下)span>
- <span>中年人(35-60)span>
- <span>老年人(60及以上)span>
-
- <br><br>
- div>
- body>
- <script>
- //定义Vue对象
- new Vue({
- el: "#app", //vue接管区域
- data:{
- age: 20
- },
- methods: {
-
- }
- })
- script>
- html>
其中采用了双向绑定到age属性,意味着我们可以通过表单输入框来改变age的值。
需求是当我们改变年龄时,需要动态判断年龄的值,呈现对应的年龄的文字描述。年轻人,我们需要使用条件判断age<=35
,中年人我们需要使用条件判断age>35 && age<60
,其他情况是老年人。所以通过v-if指令编写如下代码:
- 年龄<input type="text" v-model="age">经判定,为:
- <span v-if="age <= 35">年轻人(35及以下)span>
- <span v-else-if="age > 35 && age < 60">中年人(35-60)span>
- <span v-else>老年人(60及以上)span>
浏览器打开测试效果如下图:
v-show和v-if的作用效果是一样的,只是原理不一样。复制上述html代码,修改v-if指令为v-show指令,代码如下:
- 年龄<input type="text" v-model="age">经判定,为:
- <span v-show="age <= 35">年轻人(35及以下)span>
- <span v-show="age > 35 && age < 60">中年人(35-60)span>
- <span v-show="age >= 60">老年人(60及以上)span>
打开浏览器,展示效果如下所示:
可以发现,浏览器呈现的效果是一样的,但是浏览器中html源码不一样。v-if指令,不满足条件的标签代码直接没了,而v-show指令中,不满足条件的代码依然存在,只是添加了css样式来控制标签不去显示。
完整代码如下:
- 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>Vue-指令-v-if与v-showtitle>
- <script src="js/vue.js">script>
- head>
- <body>
- <div id="app">
-
- 年龄<input type="text" v-model="age">经判定,为:
- <span v-if="age <= 35">年轻人(35及以下)span>
- <span v-else-if="age > 35 && age < 60">中年人(35-60)span>
- <span v-else>老年人(60及以上)span>
-
- <br><br>
-
- 年龄<input type="text" v-model="age">经判定,为:
- <span v-show="age <= 35">年轻人(35及以下)span>
- <span v-show="age > 35 && age < 60">中年人(35-60)span>
- <span v-show="age >= 60">老年人(60及以上)span>
-
- div>
- body>
- <script>
- //定义Vue对象
- new Vue({
- el: "#app", //vue接管区域
- data:{
- age: 20
- },
- methods: {
-
- }
- })
- script>
- html>
v-for: 从名字我们就能看出,这个指令是用来遍历的。其语法格式如下:
- <标签 v-for="变量名 in 集合模型数据">
- {{变量名}}
- 标签>
需要注意的是:需要循环那个标签,v-for 指令就写在那个标签上。
有时我们遍历时需要使用索引,那么v-for指令遍历的语法格式如下:
- <标签 v-for="(变量名,索引变量) in 集合模型数据">
-
- {{索引变量 + 1}} {{变量名}}
- 标签>
接下来,我们再VS Code中创建名为16. Vue-指令-v-for.html的文件编写代码演示,提前准备如下代码:
- 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>Vue-指令-v-fortitle>
- <script src="js/vue.js">script>
- head>
- <body>
- <div id="app">
-
- div>
- body>
- <script>
- //定义Vue对象
- new Vue({
- el: "#app", //vue接管区域
- data:{
- addrs:["北京", "上海", "西安", "成都", "深圳"]
- },
- methods: {
-
- }
- })
- script>
- html>
然后分别编写2种遍历语法,来遍历数组,展示数据,代码如下:
- <div id="app">
- <div v-for="addr in addrs">{{addr}}div>
- <hr>
- <div v-for="(addr,index) in addrs">{{index + 1}} : {{addr}}div>
- div>
浏览器打开,呈现如下效果: