vue2.0中v-on绑定自定义事件的理解

vue中父组件通过prop传递数据给子组件,而想要将子组件的数据传递给父组件,则可以通过自定义事件的绑定。

每个Vue实例都实现了【事件接口】,即:

1、使用 $on(eventName) 监听事件

2、使用 $emit(eventName) 触发事件

父组件可以在使用子组件的地方直接用 v-on 来监听子组件触发的事件。

html代码:

1 <div id="counter-event-example">
2   <p>{{ total }}</p>
3   <button-counter v-on:increment="incrementTotal"></button-counter>
4   <button-counter v-on:increment="incrementTotal"></button-counter>
5 </div>

css代码:

 1 Vue.component(‘button-counter‘, {
 2   template: ‘<button v-on:click="increment">{{ counter }}</button>‘,
 3   data: function () {
 4     return {
 5       counter: 0
 6     }
 7   },
 8   methods: {
 9     increment: function () {
10       this.counter += 1
11       this.$emit(‘increment‘)
12     }
13   },
14 })
15 new Vue({
16   el: ‘#counter-event-example‘,
17   data: {
18     total: 0
19   },
20   methods: {
21     incrementTotal: function () {
22       this.total += 1
23     }
24   }
25 })

在子组件里面把点击事件(click)绑定给了函数increment。点击子组件的按钮将会触发位于子组件的increment函数。

this.$emit(‘increment‘这是触发当前实例上的事件。附加参数都会传给监听器回调。

子组件在调用了increment函数的时候,通过$emit来通知父组件。这样就形成父子组件间的相互呼应传递信息。

在平常的组件通讯,父组件是通过props参数对子组件进行传递,而子组件向父组件传递则可以使用自定义事件了。

这样,父组件和子组件已经解耦,子组件收到的是父组件内部的实现

原文地址:https://www.cnblogs.com/return00/p/9795028.html

时间: 2024-07-31 09:04:23

vue2.0中v-on绑定自定义事件的理解的相关文章

vue2.0 中#$emit,$on的使用详解

vue1.0中 vm.$dispatch 和 vm.$broadcast 被弃用,改用$emit,$on 1. vm.$on( event, callback ) 监听当前实例上的自定义事件.事件可以由vm.$emit触发.回调函数会接收所有传入事件触发函数的额外参数. 1 vm.$emit( event, [-args] ) 触发当前实例上的事件.附加参数都会传给监听器回调. 例子: 1 //父组件 2 <template> 3 <ratingselect @select-type=&

Vue组件绑定自定义事件

Vue组件使用v-on绑定自定义事件: 可以分为3步理解: 1.在组件模板中按照正常事件机制绑定事件: template: '<button v-on:click="increment">{{ counter }}</button>', 如上,v-on:click就是用来给子组件绑定点击事件的,这就是原生的自带的事件,容易理解. 2.子组件的事件发生时,在事件函数中向父组件"报告"这一事件(使用$emit): methods: { incre

flex中dispatchEvent的用法(自定义事件) .

Evevt和EventDispatcher类在as3的事件机制中是很重要的角色,dispatchEvent()是EventDispatcher类的一个事件发送方法,它可以发送出Event类或其子类的实例,在as3中所有的显示对象都可以发送事件,因为as3中所有的显示对象都是EventDispatcher子类DisplayObject的实例. 发送事件有三种方式:继承EventDispatcher,如sprite等显示对象.复合EventDispatcher或其子类.实现IEventDispatc

vue2.0中使用mint ui做底部选项卡切换

首先在vue2.0中webpack中下载 mint ui 然后再main.js引入 这样就可以使用mint ui里面的布局组件了html部分(就是你要使用底部选项卡的部分) <!--底部选项卡--><mt-tab-container v-model="selected"> <mt-tab-container-item id="one"> one </mt-tab-container-item> <mt-tab-c

vue2.0中router-link详解

vue2.0中router-link详解:https://blog.csdn.net/lhjuejiang/article/details/81082090 在vue2.0中,原来的v-link指令已经被<router-link>组件替代了 <router-link>组件支持用户在具有路由功能的应用中点击导航.通过to属性指定目标地址,默认渲染为带有正确连接的<a>标签,可以通过配置tag属性生成别的标签.另外,当目标路由成功激活时,链接元素自动设置一个表示激活的css

vue2.0中使用sass

第一部分:Sass语言 Sass是一种强大的css扩展语言(css本身并不是一门语言),它允许你使用变量.嵌套规则.mixins.导入等css没有但开发语言(如Java.C#.Ruby等)有的一些特性,并且完全兼容CSS语法.Sass有助于保持大型样式表结构良好. Sass有两种语法. 一种称为SCSS,是一个CSS3语法的扩充版本,也就是说,所有符合CSS3语法的样式表也都是具有相同语法意义的SCSS文件,SCSS样式表文件要以.scss扩展名结尾.在vue中,我们可以使用<style lan

jquery中取消和绑定hover事件的正确方式

在网页设计中,我们经常使用jquery去响应鼠标的hover事件,和mouseover和mouseout事件有相同的效果,但是这其中其中如何使用bind去绑定hover方法呢?如何用unbind取消绑定的事件呢?一.如何绑定hover事件先看以下代码,假设我们给a标签绑定一个click和hover事件:$(document).ready(function(){ $('a').bind({ hover: function(e) { //Hover event handler alert("hove

vue2.0中eventBus实现兄弟组件通讯

我们知道,在vue中父子组件的通讯是通过props和自定义事件搞定的,简单那的非父子组件通讯用bus(一个空的Vue实例),针对中大型的项目会选择vuex,然而小项目的话,便捷的解决方案就是eventBus. 官网相关描述在:$dispatch和$broadcast替换  一节中.提到: $dispatch 和 $broadcast 也没有解决兄弟组件间的通信问题.对于$dispatch 和 $broadcast最简单的升级方式就是:通过使用事件中心,允许组件自由交流,无论组件处于组件树的哪一层

在vue2.0中没有dev-server.js下配置方法&lt;转&gt;

这篇文章主要介绍了vue2.0在没有dev-server.js下的本地数据配置方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 问题描述: 在vue2.0的以上的版本,vue-cli的build的文件夹下没有dev-server.js文件,那怎么配置mock数据 Vue2.x在build下的webpack.dev.conf.js配置就行 //在const portfinder = require(‘portfinder')后添加 const express = require('