两个点击按钮所执行的操作的相同的,1和2的区别在于,1的简写形式就是2。
- "app">
- <button v-on:click="change()">点击button>
- <button @click="change2()">点击button>
-
- <script>
- const vm = new Vue({
- el: '#app',
- data() {
- return {
-
- }
- },
- methods: {
- change() {
- console.log('1111');
- },change2() {
- console.log('2222');
- }
- }
- })
- script>

通过点击'+','-'按钮实行显示数字的增减。
- "app">
- <button @click="sum++">+button>
- <div>{{sum}}div>
- <button @click="sum--">-button>
-
- <script src="../js/vue.js">script>
- <script>
- var vm = new Vue({
- el: '#app',
- data() {
- return {
- sum: 0,
- }
- },
- })
- script>

- "app">
- <button @click="handle(4418)">点击button>
-
- <script src="../js/vue.js">script>
-
- let vm = new Vue({
- el: '#app',
- data: {
- },
- methods: {
- handle: function (p) {
- console.log(p)
- }
- }
- })
点击按钮后,生成传入的值4418。

事件没传参,可以省略()。
事件调用方法传参了,写函数时候省略了小括号,但是函数本身是需要传递一个参数的,这个参数就是原生事件event参数传递进去。
- "app">
- <button @click="handle(4418,$event)">点击button>
-
- <script src="../js/vue.js">script>
- <script>
- let vm = new Vue({
- el: '#app',
- data: {
- },
- methods: {
- handle: function () {
- // console.log(p)
- console.log(event.target.tagName); // 获取对象
- console.log(event.target.innerHTML); //获取标签 innerHTML获取里面内容
-
- }
- }
- })
- script>

没有阻止冒泡事件,所有功能正常。

- "app">
- <div>{{num}}div>
- <div v-on:click="handle"><button v-on:click.stop="handle1">点击button>
- div>
- <a href="https://www.baidu.com/" v-on:click.prevent="handle1">百度a>
-
- <script src="../js/vue.js">script>
- <script>
- let vm = new Vue({
- el: '#app',
- data: {
- num: 0
- },
- methods: {
- handle: function () {
- this.num++;
- event.stopPropagation();
- },
- handle1: function (event) {
- },
- }
- })
- script>
使用冒泡后:
- "app">
- <div @click="divClick" class="div">
- <a href="http://www.baidu.com" @click.stop.prevent="change">去百度a>
- div>
- <script>
- const vm = new Vue({
- el: '#app',
- data() {
- },
- methods: {
- change() {
- console.log('阻止了默认行为也阻止了冒泡');
- },
- }
-
- })
- script>

添加事件监听器时使用事件捕获模式。 capture
只当在 event.target 是当前元素自身时触发处理函数。 prevent
点击事件将只会触发一次。 once
.passive 修饰符尤其能够提升移动端的性能。 .passive
- <div id="app">
- <div>请输入第一位数:<input type="text" v-model="a">div>
- <div>请输入 运算符:<input type="text" v-model="b">div>
- <div>请输入第二位数:<input type="text" v-model="c">div>
- <button @click="handle">计算button>
- <div>计算的结果为: <span v-text="msg">span>div>
- div>
- <script src="../js/vue.js">script>
- <script>
- let vm = new Vue({
- el: '#app',
- data: {
- msg: '',
- a: '',
- b: '',
- c: '',
- },
- methods: {
- handle() {
- if (this.b == '+') {
- this.msg = parseInt(this.a) + parseInt(this.c);
- } else if (this.b == '-') {
- this.msg = parseInt(this.a) - parseInt(this.c);
- } else if (this.b == '*') {
- this.msg = parseInt(this.a) * parseInt(this.c);
- } else {
- this.msg = parseInt(this.a) / parseInt(this.c);
- }
- }
- }
- })
-
- script>
