1.v-on的基本使用vue
<div id="app"> <!-- 使用事件绑定的简写形式 --> <input type="button" value="按钮" v-on:click="btn"> </div> <script> var vm = new Vue({ el: '#app',
//methods是用来专门存放vue的处理方法的 methods: { btn: function () { alert('123'); } } }); </script>
咱们在的的时侯v-on是能够缩写成@的,例如上边的能够缩写成:@:chick="btn"。数组
在Vue中,其余的事件均可以用v-on绑定浏览器
2.事件修饰符app
在事件处理程序中调用 event.preventDefault()
或 event.stopPropagation()
是很是常见的需求。尽管咱们能够在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。oop
为了解决这个问题,Vue.js 为 v-on
提供了事件修饰符。以前提过,修饰符是由点开头的指令后缀来表示的。测试
使用修饰符 阻止浏览器的默认行为this
<div id="app"> <a href="http://www.qq.com" v-on:click.prevent="btn">腾讯</a> </div> <script> var vm = new Vue({ el: '#app', methods: { btn: function () { alert('123'); } } }); </script>
使用修饰符绑定一次性事件spa
<div id="app"> <a href="http://www.qq.com" v-on:click.once="btn($event)">腾讯</a> </div> <script> var vm = new Vue({ el: '#app', methods: { btn: function (ev) { ev.preventDefault(); alert('123'); } } }); </script>
$event是原始的DOM事件:有时也须要在内联语句处理器中访问原始的 DOM 事件。能够用特殊变量 $event
把它传入方法:code
按键修饰符:对象
<div id="app"> <input type="text" v-on:keyup.enter="keyup"> </div> <script> var vm = new Vue({ el: '#app', methods: { keyup:function(){ console.log('111') } } }); </script>
鼠标修饰符:鼠标左键触发事件
<div id="app"> <input type="button" value="按钮" v-on:click.left="btn"> </div> <script> var vm = new Vue({ el: '#app', methods: { btn:()=>{ console.log('111') } } }); </script>
你可能注意到这种事件监听的方式违背了关注点分离 (separation of concern) 这个长期以来的优良传统。但没必要担忧,由于全部的 Vue.js 事件处理方法和表达式都严格绑定在当前视图的 ViewModel 上,它不会致使任何维护上的困难。实际上,使用 v-on
有几个好处:
扫一眼 HTML 模板便能轻松定位在 JavaScript 代码里对应的方法。
由于你无须在 JavaScript 里手动绑定事件,你的 ViewModel 代码能够是很是纯粹的逻辑,和 DOM 彻底解耦,更易于测试。
3.当一个 ViewModel 被销毁时,全部的事件处理器都会自动被删除。你无须担忧如何清理它们。
3.v-show的指令:
<body> <div id="app"> <input type="button" value="按钮" v-on:click="change"> <p v-show="is_show">秀儿,是你吗</p> </div> </body> <script> var app = new Vue({ el: '#app', data: { is_show: false, }, methods: { change: function () { this.is_show = !this.is_show; } } }); </script>
4.v-if的指令:
<body> <div id="app"> <input type="text" id="" v-model="type"> <div v-if="type === 'A'">我是A</div> <div v-else-if="type === 'B'">我是B</div> <div v-else-if="type === 'C'">我是C</div> <div v-else-if="type === 'D'">我是D</div> <div v-else>我什么也不是</div> </div> </body> <script> var app = new Vue({ el:'#app', data:{ type:'' } }); </script>
5.v-for的指令:
<body> <div id="app"> <!-- 数组 --> <ul> <!-- v-for 循环的语法规则能够参考 js 的 for in 循环 --> <li v-for="(v,key) in arr">{{v}}---{{key}}</li> </ul> <!-- 对象 --> <ul> <li v-for="(v,k) in oop">{{v}}----{{k}}</li> </ul> </div> </body> <script> // for(cc in arr) var app = new Vue({ el:'#app', data:{ arr:['ff','hh','jj','gg','ll'], oop:{name:'张三',age:30,sex:'男'} } }); </script>
6.v-once:的指令:
<body> <div id="app"> <!-- 只渲染一次数据 再也不是数据单项绑定 这是单次绑定 --> <p v-once>{{msg}}</p> </div> </body> <script> var app = new Vue({ el:'#app', data:{ msg:'123' } }); </script>