上QQ阅读APP看书,第一时间看更新
2.8 Vue.js指令总结
Vue.js的常用指令如表2-1所示。
表2-1 Vue.js指令概览
2.8.1 基础用法
指令(directive)是Vue.js模板中最常用的一项功能,带有前缀v-,在前面我们已经介绍了一些指令,比如v-html、v-once、v-bind等。指令的主要职责是,当其表达式的值改变时,相应地将某些行为应用到DOM上;我们可以将指令看作特殊的html特性。
下面,我们通过if指令来判断某些内容是否显示。
1)我们在data代码块中定义两个布尔型变量:xianshi:true和buxianshi:false。
2)我们在html视图代码块中结合变量和v-if指令。代码如下:
<!--属性的值xianshi为true,则下面段落显示--> <p v-if="xianshi">使用了if指令,显示内容</p> <!--属性的值buxianshi为false,则下面段落不显示--> <p v-if="buxianshi">使用了if指令,这里的内容不显示</p>
完整示例代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue.js中的指令</title> <!--加载本地Vue.js的框架--> <script src="vue2.2.2.min.js"></script> </head> <body> <!--定义div代码块的id的值,这里定义的值为app,后面Vue会使用该值--> <div id="app"> <!--属性的值xianshi为true,则下面段落显示--> <p v-if="xianshi">使用了if指令,显示内容</p> <!--属性的值buxianshi为false,则下面段落不显示--> <p v-if="buxianshi">使用了if指令,这里的内容不显示</p> </div> <script> new Vue({ el: '#app',//app为前面div代码块的id的值,通过“#”绑定 //data区域定义属性的值 data: { xianshi:true, //定义布尔型变量,不能添加双引号或者单引号; //后面还有数据,则这里定义完毕后面需要跟上逗号“,” buxianshi:false //后面没有数据,则这里定义完毕后面不需要跟上逗号“,” } }) </script> </body> </html>
效果如图2-6所示。
图2-6 Vue.js中的指令基础用法
2.8.2 指令参数
参数在指令后以冒号指明。对于html的属性来讲,冒号后面跟的是html原来的属性。
下面我们在示例中使用后面跟参数的v-bind指令来演示网址的打开、图片的下载、点击事件的调用。
示例代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue.js中的指令</title> <!--加载本地vue.js的框架--> <script src="vue2.2.2.min.js"></script> </head> <body> <!--定义div代码块的id的值,这里定义的值为app,后面Vue会使用该值--> <div id="app"> <!--打开一个到淘宝的页面,网址通过参数的形式传递--> <a v-bind:href="wangzhi" v-bind:target="target">去淘宝网</a><br> <!--加载一个图片,图片的地址通过参数传递--> <img v-bind:src="tupiandizhi" width="50"></img><br> <!--按钮的点击事件通过参数传递来执行--> <button v-on:click="mybt01()">使用Vue.js语法的按钮</button> <hr> <!--下面是原生JavaScript调用点击事件--> <button onclick="mybt01()" >原生js调用点击事件</button> </div> <script> //下面是Vue.js的代码块-开始 new Vue({ el: '#app',//app为前面div代码块的id的值,通过“#”绑定 //data区域定义属性的值 data: { wangzhi: 'http://www.taobao.com',//定义网址 //后面还有数据,则这里定义完毕后面需要跟上逗号“,” tupiandizhi:'img/v.png',//定义图片地址 target:'_blank' //链接在新窗口打开 //后面没有数据,则这里定义完毕后面不需要跟上逗号“,” } }) //Vue.js的代码块-结束 //下面是定义原生JavaScript的函数,在vue.js中可以调用 function mybt01() { alert("你好,黄菊华老师!")//弹出提示框 } </script> </body> </html>
效果如图2-7和图2-8所示。
图2-7 页面运行的默认效果图
图2-8 点击按钮后,弹出提示框
在上面的示例中,href是参数,告知v-bind指令将该元素的href属性与表达式url的值绑定。
上面的示例中,v-on指令用于监听DOM事件:
<a v-on:click="doSomething">
在这里参数是监听的事件名。
2.8.3 指令缩写
Vue.js为两个最为常用的指令v-bind和v-on提供了特别的缩写形式,示例代码如下:
<!-- 完整语法 --> <a v-bind:href="url"></a> <!-- 缩写 --> <a :href="url"></a> <!-- 完整语法 --> <a v-on:click="doSomething"></a> <!-- 缩写 --> <a @click="doSomething"></a>
2.8.4 修饰符
修饰符是以半角句号“.”指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。例如,.prevent修饰符告诉v-on指令对于触发的事件调用event.preventDefault()。示例代码如下:
<form v-on:submit.prevent="onSubmit"></form>