Vue.js的常用指令

Posted 解说编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue.js的常用指令相关的知识,希望对你有一定的参考价值。

Vue.js的指令是以v-开头的,它们作用于html元素,指令提供了一些特殊的特性,将指令绑定在元素上时,指令会为绑定的目标元素添加一些特殊的行为,我们可以将指令看作特殊的HTML特性(attribute)。

Vue.js提供了一些常用的内置指令,接下来我们将介绍以下几个内置指令:

  • v-if指令

  • v-show指令

  • v-else指令

  • v-for指令

  • v-bind指令

  • v-on指令

Vue.js具有良好的扩展性,我们也可以开发一些自定义的指令,后面的文章会介绍自定义指令。

1.v-model指令

MVVM模式本身是实现了双向绑定的,在Vue.js中可以使用v-model指令在表单元素上创建双向数据绑定。

1<!--这是我们的View-->
2<div id="app">
3    <p>{{ message }}</p>
4    <input type="text" v-model="message"/>
5</div>
6将message绑定到文本框,当更改文本框的值时,<p>{{ message }}</p> 中的内容也会被更新。

2.v-if指令

v-if是条件渲染指令,它根据表达式的真假来删除和插入元素,它的基本语法如下:
v-if="expression"
expression是一个返回bool值的表达式,表达式可以是一个bool属性,也可以是一个返回bool的运算式。例如:

 1<!DOCTYPE html>
2<html>
3    <head>
4        <meta charset="utf-8" />
5        <title></title>
6        <script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
7        <script type="text/javascript">
8        window.onload=function(){
9            //这是我们的Model
10            var exampleData ={
11                message:'Hello World!',
12                    yes:true,
13                     no:false,
14                      a:13
15            }      
16            //创建一个Vue实例或“ViewModel”
17            new Vue({
18                el:'#app',
19                data:exampleData
20            })
21        }      
22        
</script>
23    </head>
24    <body>
25        <!--这是我们的View-->
26        <div id="app">
27            <h1 v-if="yes">1</h1>
28            <h1 v-if="no">2</h1>
29            <h1 v-if="a>15">3</h1>
30        </div>
31    </body>
32</html>

运行结果:

1

这段代码使用了3个表达式:

数据的yes属性为true,所以"1"会被输出;
数据的no属性为false,所以"2"不会被输出;
运算式age >= 15返回false,所以"3"不会被输出;

在Chrome控制台

注意:v-if指令是根据条件表达式的值来执行元素的插入或者删除行为。

3.v-show指令

v-show也是条件渲染指令,和v-if指令不同的是,使用v-show指令的元素始终会被渲染到HTML,它只是简单地为元素设置CSS的style属性。

 1<!DOCTYPE html>
2<html>
3    <head>
4        <meta charset="utf-8" />
5        <title></title>
6        <script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
7        <script type="text/javascript">
8        window.onload=function(){
9            //这是我们的Model
10            var exampleData ={
11                message:'Hello World!',
12                    yes:true,
13                     no:false,
14                      a:13
15            }      
16            //创建一个Vue实例或“ViewModel”
17            new Vue({
18                el:'#app',
19                data:exampleData
20            })
21        }      
22        
</script>
23    </head>
24    <body>
25        <!--这是我们的View-->
26        <div id="app">
27            <h1 v-show="yes">1</h1>
28            <h1 v-show="no">2</h1>
29            <h1 v-show="a>15">3</h1>
30        </div>
31    </body>
32</html>

运行结果

1

在Chrome控制台

Vue.js的常用指令

一般来说, v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗。因此,如果需要频繁切换使用 v-show 较好,如果在运行时条件不大可能改变则使用 v-if 较好。

4.v-else指令

v-if于v-else是可以一起使用的,相当于 if(){}else{}. 也就是说v-if后可跟v-else.   v-show,只是根据条件显示。后面没有v-else

 1<!DOCTYPE html>
2<html>
3
4    <head>
5        <meta charset="UTF-8">
6        <title></title>
7    </head>
8    <body>
9        <div id="app">
10            <h1 v-if="age >= 25">Age: {{ age }}</h1>
11            <h1 v-else>Name: {{ name }}</h1>
12            <h1>---------------------分割线---------------------</h1>
13            <h1 v-if="age >= 29">Age: {{ age }}</h1>
14            <h1 v-else>Name: {{ name }}</h1>
15        </div>
16    </body>
17    <script src="js/vue.min.js"></script>
18    <script>
19        var vm = new Vue({
20            el: '#app',
21            data: {
22                age: 28,
23                name: 'keepfool',
24            }
25        })
26    
</script>
27</html>

运行结果

Age: 28
---------------------分割线---------------------
Name: keepfool

5.v-for指令

v-for指令基于一个数组渲染一个列表,它和JavaScript的遍历语法相似:

v-for="item in items"
items是一个数组,item是当前被遍历的数组元素。

 1<!DOCTYPE html>
2<html>
3
4    <head>
5        <meta charset="UTF-8">
6        <title></title>
7        <link rel="stylesheet" type="text/css" href="css/demo.css"/>
8    </head>
9    <body>
10        <div id="app">
11            <div id="first">
12                <div>name</div>
13                <div>age</div>
14                <div>sex</div>
15            </div>
16            <div v-for="person in people" id="Second">
17                <div>{{ person.name }}</div>
18                <div>{{ person.age }}</div>
19                <div>{{ person.sex }}</div>
20            </div>
21        </div>
22    </body>
23    <script src="js/vue.min.js"></script>
24    <script>
25        var vm = new Vue({
26            el: '#app',
27            data:{ people:[
28                   {name:'Jack',
29                     age:'30',
30                     sex:'Male'},
31                    {
32                    name: 'Bill',
33                    age: 26,
34                    sex: 'Male'
35                }, {
36                    name: 'Tracy',
37                    age: 22,
38                    sex: 'Female'
39                }, {
40                    name: 'Chris',
41                    age: 36,
42                    sex: 'Male'
43                }]
44            }
45        })
46    
</script>
47</html>

运行结果

Vue.js的常用指令

6.v-bind指令

Vue官方提供了一个简写方式 :bind,例如:

1<!-- 完整语法 -->
2<a v-bind:href="url"></a>
3
4<!-- 缩写 -->
5<a :href="url"></a>

绑定HTML Class
我们可以给v-bind:class 一个对象,以动态地切换class。注意:v-bind:class指令可以与普通的class特性共存

1<ul class="box" v-bind:class="{‘textColor‘:isColor, ‘textSize‘:isSize}">
2    <li>学习Vue</li>
3    <li>学习Node</li>
4    <li>学习React</li>
5</ul>

7.v-on指令

v-on指令用于给监听DOM事件,它的用语法和v-bind是类似的,例如监听元素的点击事件:

1<a v-on:click="doSomething">

有两种形式调用方法:绑定一个方法(让事件指向方法的引用),或者使用内联语句。

 1 var vm = new Vue({
2                el: '#app',
3              data:{
4                   message:'Hello vue.js'
5              },
6               // 在 'methods'对象中定义方法
7           methods: {
8                greet: function() {
9                    // // 方法内 `this` 指向 vm
10                    alert(this.message)
11                },
12                say: function(msg) {
13                    alert(msg)
14                }
15            }
16
17             })

运行结果:

Vue.js的常用指令

Greet按钮将它的单击事件直接绑定到greet()方法

Vue.js的常用指令

而Hi按钮则是调用say()方法。


   



以上是关于Vue.js的常用指令的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js常用指令:v-for

Vue专题-js常用指令

Vue.js的常用指令

Vue.js常用指令:v-model

Vue.js的常用指令

Vue.js学习(常用指令)