<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title> 绑定事件监听器</title> <!-- Vue.js --> <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script> </head> <body> <div> <p v-if="show">这是一段文本</p> <buttton v-on:click="handleClose">点击隐藏</buttton> </div> </body> </html> <script> //当数据show的值为true时,p元素会被插入,为false时会被移除 var myData = { show:true }; var app = new Vue({ el:'#app', data:myData, //在普通元素上,v-on可以监听原生的DOM事件,除了click外,还有dbclick、keyup、mousemove等。表达式可以是一个方法名,这些方法都写在vue实例的methods属性内,并且是函数的形式,函数内的this指向的是当前vue实例本身,因此可以直接使用this.xxx的形式来访问或者修改数据,如实例中的this.show = false;把数据show修改为了false,所以点击按钮时,文本p元素就被移除了 methods:{ handleClose:function () { // this.show = false //在handleClose方法内,直接通过close()调用了close函数。在示例中是多此一举的,只是用于演示它的用法 this.close() }, close:function () { this.show = false } } }) </script>
使用本站HTML/CSS/JS在线运行测试工具:,可得到如下测试运行效果:
再来看一个例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>vue</title> <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script> </head> <body> <div>{{msg}} <p v-for="val in arr"> {{val.a}} </p> <a href="javascript:void(0)" v-on:click="tap">点我</a> </div> </body> </html> <script> // window.onload= function(){ var app2 = new Vue ({ el:"#test", data:{ msg:'润元装饰', msg1:"家装"+new Date(), msg2:'lianxi', show:true, arr:[ {a:'bb'}, {a:'cc'} ] }, methods:{ tap : function(){ this.arr.unshift({a:'new'}) } } }) // } </script>