自定义事件在 Vue.js 组件中的应用

简介: Vue.js 组件的自定义事件可以让子组件向父组件传递数据,非常方便实用。在使用自定义事件时,我们可以使用 v-on 来绑定事件,每个 Vue 实例都实现了事件接口,即使用 $on(eventName) 监听事件和使用 $emit(eventName) 触发事件。此外,在父组件中,我们可以使用 v-on 来监听子组件触发的事件。

Vue.js 组件的自定义事件可以让子组件向父组件传递数据,非常方便实用。在使用自定义事件时,我们可以使用 v-on 来绑定事件,每个 Vue 实例都实现了事件接口,即使用 $on(eventName) 监听事件和使用 $emit(eventName) 触发事件。此外,在父组件中,我们可以使用 v-on 来监听子组件触发的事件。

下面是一个示例,子组件和它外部完全解耦,只需要触发一个父组件关心的内部事件:

Copy

div id="app">
  <div id="counter-event-example">
    <p>{{ total }}</p>
    <button-counter v-on:increment="incrementTotal"></button-counter>
    <button-counter v-on:increment="incrementTotal"></button-counter>
  </div>
</div>
-----------------------------------
©著作权归作者所有:来自51CTO博客作者iOS游戏开发的原创作品,请联系作者获取转载授权,否则将追究法律责任
自定义事件在 Vue.js 组件中的应用
https://blog.51cto.com/u_15848821/6123157

Copy

Vue.component('button-counter', {
  template: '<button v-on:click="incrementHandler">{{ counter }}</button>',
  data() {
    return {
      counter: 0,
    };
  },
  methods: {
    incrementHandler() {
      this.counter += 1;
      this.$emit('increment');
    },
  },
});
new Vue({
  el: '#counter-event-example',
  data: {
    total: 0,
  },
  methods: {
    incrementTotal() {
      this.total += 1;
    },
  },
});
-----------------------------------
©著作权归作者所有:来自51CTO博客作者iOS游戏开发的原创作品,请联系作者获取转载授权,否则将追究法律责任
自定义事件在 Vue.js 组件中的应用
https://blog.51cto.com/u_15848821/6123157

如果要监听某个组件的根元素上的原生事件,可以使用 .native 修饰 v-on。

另外,组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,可以通过 model 选项指定当前的事件类型和传入的 props。

以下是一个示例,父组件的 num 的初始值是 100,更改子组件的值能实时更新父组件的 num:

Copy

<div id="app">
  <kxdang-input v-model="num"></kxdang-input>
  <p>输入的数字为:{{num}}</p>
</div>


Copy

Vue.component('kxdang-input', {
  template: `
    <p>
      <input
        ref="input"
        :value="value"  
        @input="$emit('input', $event.target.value)"
      >
    </p>
  `,
  props: ['value'],
});
new Vue({
  el: '#app',
  data: {
    num: 100,
  },
});


总的来说,Vue.js 组件的自定义事件和 v-model 机制非常强大,能够让我们更加方便地进行组件间的数据交互。需要注意的是,在使用自定义事件时,我们应该避免出现命名冲突,以免产生不必要的错误。同时,在使用 v-model 时,我们也要注意传入的 props 和事件名的对应关系。

相关文章
|
14天前
|
JavaScript
vue 函数化组件
vue 函数化组件
|
1月前
|
资源调度 JavaScript API
vue3封装城市联动组件
vue3封装城市联动组件
|
5天前
|
JavaScript
vue组件中的插槽
本文介绍了Vue中组件的插槽使用,包括单个插槽和多个具名插槽的定义及在父组件中的使用方法,展示了如何通过插槽将父组件的内容插入到子组件的指定位置。
|
14天前
|
存储 API
vue3中如何动态自定义创建组件并挂载
vue3中如何动态自定义创建组件并挂载
206 90
|
2月前
|
JavaScript 前端开发 开发者
哇塞!Vue.js 与 Web Components 携手,掀起前端组件复用风暴,震撼你的开发世界!
【8月更文挑战第30天】这段内容介绍了Vue.js和Web Components在前端开发中的优势及二者结合的可能性。Vue.js提供高效简洁的组件化开发,单个组件包含模板、脚本和样式,方便构建复杂用户界面。Web Components作为新兴技术标准,利用自定义元素、Shadow DOM等技术创建封装性强的自定义HTML元素,实现跨框架复用。结合二者,不仅增强了Web Components的逻辑和交互功能,还实现了Vue.js组件在不同框架中的复用,提高了开发效率和可维护性。未来前端开发中,这种结合将大有可为。
94 0
|
7天前
|
JavaScript
Vue使用element中table组件实现单选一行
如何在Vue中使用Element UI的table组件实现单选一行的功能。
26 5
Vue使用element中table组件实现单选一行
|
9天前
|
JavaScript
Vue2.0、Vue3.0分别使用v-model封装组件[Vue必会]
本文介绍了在Vue 2和Vue 3中如何使用`v-model`来实现组件间的双向数据绑定,包括在Vue 2中使用`value`和`input`事件,以及在Vue 3中使用`modelValue`和`update:modelValue`事件的方法。
51 22
|
4天前
|
JavaScript
vue 函数化组件
vue 函数化组件
|
6天前
|
JavaScript 前端开发 Java
vue-day03 组件基础
文章介绍了Vue.js中组件的基础概念、注册格式、命名方式、全局与局部注册的区别、prop属性的详细使用以及通过prop向子组件传递数据的方法,并提供了计数器和博文小组件的实例。
|
1月前
|
存储 JavaScript
vue组件的五种传值方法(父子\兄弟\跨组件)
vue组件的五种传值方法(父子\兄弟\跨组件)
下一篇
无影云桌面