Vue - v-on的使用


一、事件监听

如果我们想监听用户的点击, 拖拽, 键盘事件等, 可以使用v-on指令

语法

v-on:事件=" 操作 "

二、v-on的基本使用

<body>
  <div id="app">
    <h2>{{counter}}</h2>
    <button v-on:click="add">+</button>
    <button v-on:click="sub">-</button>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        counter: 0
      },
      methods: {
        add() {
          this.counter++
        },
        sub() {
          this.counter--
        }
      },
    })
  </script>
</body>

三、v-on的语法糖

v-on: 替换为 @ , 比如v-on:click=" " , 用语法糖写就是 @click=" "

<body>
  <div id="app">
    <h2>{{counter}}</h2>
    <button @click="add">+</button>
    <button @click="sub">-</button>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        counter: 0
      },
      methods: {
        add() {
          this.counter++
        },
        sub() {
          this.counter--
        }
      },
    })
  </script>
</body>

四、v-on的参数

1. 如果函数需要参数, 但是没有传入, 那么函数的形参为undefined

<body>
  <div id="app">
    <!-- 这里需要传递一个参数 -->
    <!-- <button @click="add(111)">点击</button> -->
    <!-- 如果没有传递参数, 那么形参就是undefined -->
    <button @click="add()">点击</button>  
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {},
      methods: {
        add(name) {
          console.log(name);
        }
      }
    })
  </script>
</body>

2. 如果在事件定义时, 写函数时省略了小括号, 但是方法本身是需要一个参数的, 这个时候Vue会默认传递event

<body>
  <div id="app">
    <!-- MouseEvent {isTrusted: true, screenX: 428, screenY: 147, clientX: 32, clientY: 23, …} -->
    <!-- 如果在事件定义时, 写函数时省略了小括号, 但是方法本身是需要一个参数的, 这个时候Vue会默认传递event -->
    <button @click="add">点击</button>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {},
      methods: {
        add(event) {
          console.log(event);
        }
      }
    })
  </script>
</body>

3. 方法定义时, 我们需要event对象, 同时又需要其他参数

通过$event可以获取到浏览器参数的event对象

<body>
  <div id="app">
    <!-- 通过$event可以获取到浏览器参数的event对象 -->
    <button @click="add(123, $event)">点击</button>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {},
      methods: {
        add(name, event) {
          console.log(name);
          console.log(event);
        }
      }
    })
  </script>
</body>

五、v-on修饰符

v-on修饰符可以进行一些事件处理.

1. 阻止事件冒泡

<button @click.stop="doThis"></button>

加stop修饰符之前

<body>
  <div id="app">
    <div @click="divClick">
      <button @click="btnClick">点击</button>
    </div>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {},
      methods: {
        btnClick() {
          console.log("按钮点击事件");
        },
        divClick() {
          console.log("div按钮点击事件");
        }
      }
    })
  </script>
</body>

在这里插入图片描述

加stop修饰符之后

<body>
  <div id="app">
    <div @click="divClick">
      <button @click.stop="btnClick">点击</button>
    </div>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {},
      methods: {
        btnClick() {
          console.log("按钮点击事件");
        },
        divClick() {
          console.log("div按钮点击事件");
        }
      }
    })
  </script>
</body>

在这里插入图片描述

2. 阻止默认行为

<button @click.prevent="doThis"></button>

<body>
  <div id="app">
    <form action="baidu">
      <input type="submit" value="提交" @click.prevent="inputClick">
    </form>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {},
      methods: {
        inputClick() {
          console.log("自己提交");
        }
      }
    })
  </script>
</body>

3. 阻止默认行为,没有表达式

<button @click.prevent></button>

4. 串联修饰符

<button @click.stop.prevent></button>

5. 键修饰符, 键别名

只当事件是从特点键触发时才触发回调
<input @keyup.enter="onEnter">

<body>
  <div id="app">
    <input type="text" @keyup.enter="onEnter">
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {},
      methods: {
        onEnter() {
          console.log("回车");
        }
      }
    })
  </script>
</body>

6. 键修饰符, 键代码

<input@keyup.13="onEnter">

7. 点击回调只会触发一次

<button @click.once="doThis "></button>

<body>
  <div id="app">
    <button @click.once="oncClick">点击只触发一次</button>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {},
      methods: {
        oncClick() {
          console.log("只触发一次");
        }
      }
    })
  </script>
</body>
  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: vue-konva是一个基于Vue.js的Konva库的封装,它提供了一系列的Vue组件,能够轻松地在Vue应用中创建和操作Konva舞台和图形。 v-rect是vue-konva中的一个矩形组件。通过使用v-rect组件,我们可以在Konva舞台上创建一个矩形,并设置其属性和事件。 首先,我们需要在Vue组件中引入v-rect组件。在template中,使用<template v-rect>标签来创建一个矩形。我们使用v-bind指令来设置矩形的属性,例如宽度、高度、位置等等。同时,我们也可以使用v-on指令来监听矩形的事件,例如点击、拖动等等。 v-rect的属性有很多,其中一些常用的属性包括width(宽度)、height(高度)、x(x坐标)、y(y坐标)、fill(填充颜色)、stroke(边框颜色)等等。我们可以根据需求来设置这些属性的值。例如,设置矩形的宽度为100px,高度为50px,填充颜色为红色,可以这样写:<template v-rect:width="100" v-rect:height="50" v-rect:fill="red"> 同时,v-rect也支持一些事件,如点击事件(click)、拖动事件(dragstart、dragmove、dragend)等等。我们可以使用v-on指令来监听这些事件,然后在Vue组件中定义相应的方法来处理这些事件。例如,监听矩形的点击事件,可以这样写:<template v-rect v-on:click="handleClick">,然后在Vue组件中定义handleClick方法来处理点击事件。 综上所述,v-rect是vue-konva中一个非常有用的组件,可以轻松地创建、设置和操作Konva舞台上的矩形。通过设置属性和监听事件,我们可以根据需求来定制矩形的外观和行为。 ### 回答2: Vue-Konva 是一个基于 Vue.js 的 Konva Canvas 库,用于创建可交互的图形和动画。v-rect 是 Vue-Konva 提供的一个指令,用于在画布上创建矩形。 使用 v-rect 指令创建矩形非常简单。首先,你需要在 Vue 组件中引入 Vue-Konva 库,然后使用 v-rect 指令在画布上创建矩形的元素。例如,你可以创建一个矩形,设置其位置、大小、颜色等属性。 ```html <template> <v-stage :config="stageConfig"> <v-layer> <v-rect v-for="(rect, index) in rectangles" :key="index" :config="rect.config" /> </v-layer> </v-stage> </template> <script> import { Stage, Layer, Rect } from "vue-konva"; export default { components: { VStage: Stage, VLayer: Layer, VRect: Rect, }, data() { return { stageConfig: { width: window.innerWidth, height: window.innerHeight, }, rectangles: [ { config: { x: 100, y: 100, width: 200, height: 100, fill: "red", }, }, { config: { x: 300, y: 200, width: 150, height: 150, fill: "blue", }, }, ], }; }, }; </script> ``` 在上面的代码中,我们创建了一个 Vue 组件,其中包含了 VStage、VLayer 和 VRect 组件。通过给 VStage 设置 config 属性,我们可以定义画布的大小。然后,在 VLayer 中,通过遍历 rectangles 数组并使用 v-rect 指令,我们可以在画布上创建多个矩形。每个矩形都有一个 config 对象,用于定义其位置、大小和颜色等属性。 通过这种方式,我们可以在 Vue.js 中轻松地创建和管理 Konva Canvas 上的矩形,并对其进行各种操作和交互。无论是改变矩形的位置、大小,还是响应用户的交互事件,v-rect 都为我们提供了便捷的方法。 ### 回答3: Vue-Konva是一个基于Vue.js的HTML5 Canvas库,用于创建和操作可视化图形。 v-rect是Vue-Konva中的一个组件,用于绘制矩形形状。它可以接受一些属性来定义矩形的样式和位置。以下是一些v-rect支持的属性: - x:矩形左上角的x坐标。 - y:矩形左上角的y坐标。 - width:矩形的宽度。 - height:矩形的高度。 - fill:矩形的填充颜色。 - stroke:矩形的描边颜色。 - strokeWidth:矩形的描边宽度。 例如,我们可以使用v-rect创建一个红色的矩形: ``` <template> <v-stage :config="stageSize"> <v-layer> <v-rect :config="rectConfig" /> </v-layer> </v-stage> </template> <script> export default { data() { return { stageSize: { width: 400, height: 400 }, rectConfig: { x: 100, y: 100, width: 200, height: 100, fill: 'red' } } } } </script> ``` 在上面的示例中,我们使用v-stage和v-layer组件来创建一个舞台和图层。然后,我们在图层中使用v-rect组件来创建矩形。通过设置rectConfig对象的属性,我们定义了矩形的位置、大小和颜色。 以上就是关于Vue-Konva的v-rect的使用介绍。希望能够对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值