您的当前位置:首页Vue组件之自定义事件的功能图解

Vue组件之自定义事件的功能图解

2022-06-15 来源:比拉宠物

使用v-on绑定自定义事件

(一)基于webpack的项目初始化

在使用之前,我们先使用npm构建一个vue应用,使该项目能很好地和webpack模块打包器配合使用,命令如下

进入自定义空文件夹vuepro下,myapp项目初始化需利用webpack打包生成一个标准目录的项目文件夹

vue init webpack myapp

安装过程会出现以下几个让我们操作的地方,前几个直接按回车,后面输入n即可,如下图

安装完成后,myapp文件夹下会自动生成一些文件和文件夹,表示我们项目初始化完成,而我们的的APP.vu是主组件,components组件是Vue的一种代码复用的机制,components把js和HTML混合到一起,作为整个Vue应用层的基础

我们可以根据上图终端提示的命令去运行我们的项目

cd myapp

npm run dev

我们再将上图中得到的网址赋值到浏览器打开,得到以下页面表示我们基于webpack的项目构建成功

打开主组件,如果亲们出现了下图和我一样的提醒,是因为我们的javascript不支持ES6语法,我们只需进入设置里面改一下语言类型就可以了。

到这里我们可以去介绍组件自定义事件的使用了

(二)v-on && $emit 使用 $on(eventName) 监听事件 使用 $emit(eventName) 触发事件

我们在myapp/src/components下新建一个组件Emit.vue,同时我们得在主组件APP.vue中引入该组件,以及注册该组件

然后我们在Emit.vue文件中去些一个自定义事件的例子

当我们点击按钮就能获取到组件内部的事件盒参数

总结

以上所述是小编给大家介绍的Vue组件之自定义事件的功能图解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

小编还为您整理了以下内容,可能对您也有帮助:

Vue——自定义组件 & 自定义事件$emit & 插槽slot

局部注册的组件,只能在当前Vue实例中使用,并且在其子组件中不可用。

在 components 选项中定义局部组件。每个组件就是一个小型的Vue实例,它里面除了不能设置el选项,其他选项它都有。

组件名称: 自定义,可以使用驼峰命名方式或者短横线的命名方式,但是需要注意的是如果应用到DOM中,就只能用短横线命名的方式,否则就会报错。注意组件的名称不要跟原生html元素重名。

template选项: 定义组件的模板。模板中必须包含一个根标签。

props选项: 定义组件标签上的属性。驼峰命名法的 prop 名(postTitle)需要使用其等价的短横线分隔命名法(post-title)命名。注意:props是只读的,不能修改( 解决办法: 在data中对props接收到的数据进行中转)。

data: 定义组件的数据。注意:Vue实例的data选项可以是一个对象,也可以是一个方法,由该方法返回一个对象。 但是在组件中,data选项必须是一个方法,由该方法返回一个对象。因为组件可能会使用很多次,如果data选项是对象的话,会导致多个组件使用了同一份数据。

全局注册的组件可以用在任何新创建的 Vue 根实例 (new Vue) 的模板中。

使用 Vue.component 来创建全局组件。Vue.component的第一个参数就是组件名。

$emit()用于触发自定义事件。注意:事件名称中不能采用大写字母。

效果:

效果:

slot 用于在组件的内部定义插槽,组件标签之间的所有html内容,会在插槽所在位置呈现。

效果:

Vue入门之自定义事件$emit-父组件获取子组件的数据

前面讲过通过props子组件很容易就可以获取到父组件的数据,但是父组件怎么获取子组件的数据呢?通过查资料,发现可以通过自定义事件来实现父组件与子组件之间的通信。

首先,得创建一个子组件模板文件,子组件在父组件中用的时候,总得有个触发动作可以获取到子组件的数据吧,所以,加个按钮,触发个动作。如下所示:

App.vue

最里面的自定义组件不能触发事件,如何解决

使用v-on绑定自定义事件

(一)基于webpack的项目初始化

在使用之前,我们先使用npm构建一个vue应用,使该项目能很好地和webpack模块打包器配合使用,命令如下

进入自定义空文件夹vuepro下,myapp项目初始化需利用webpack打包生成一个标准目录的项目文件夹

vue init webpack myapp    

安装过程会出现以下几个让我们操作的地方,前几个直接按回车,后面输入n即可,如下图

安装完成后,myapp文件夹下会自动生成一些文件和文件夹,表示我们项目初始化完成,而我们的的APP.vu是主组件,components组件是Vue的一种代码复用的机制,components把js和HTML混合到一起,作为整个Vue应用层的基础

我们可以根据上图终端提示的命令去运行我们的项目

cd myapp

npm run dev    

我们再将上图中得到的网址赋值到浏览器打开,得到以下页面表示我们基于webpack的项目构建成功

打开主组件,如果亲们出现了下图和我一样的提醒,是因为我们的javascript不支持ES6语法,我们只需进入设置里面改一下语言类型就可以了。

到这里我们可以去介绍组件自定义事件的使用了

(二)v-on && $emit 使用 $on(eventName) 监听事件 使用 $emit(eventName) 触发事件

我们在myapp/src/components下新建一个组件Emit.vue,同时我们得在主组件APP.vue中引入该组件,以及注册该组件

然后我们在Emit.vue文件中去些一个自定义事件的例子

当我们点击按钮就能获取到组件内部的事件盒参数

总结

以上所述是小编给大家介绍的Vue组件之自定义事件的功能图解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

您可能感兴趣的文章:vuejs事件中心管理组件间的通信详解vue2.x 父组件监听子组件事件并传回信息的方法vue子组件使用自定义事件向父组件传递数据详解Vue2.0之去掉组件click事件的native修饰vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法

vue中$refs, $emit, $on, $once, $off的使用详解

父组件调用子组件的方法,可以传递数据。
父组件:

子组件:

子组件调用父组件的方法并传递数据。

子组件:

父组件:

兄弟组件之间相互传递数据。
首先创建一个vue的空白实例(兄弟组件的桥梁)

子组件a:发送放使用$emit自定义事件把数据带过去。

子组件b:接收方通过$on监听自定义事件的callback接收数据

父组件:

监听一个自定义事件,但是只触发一次。一旦触发之后,*就会被移除。
将on变成once,即只执行一次。

移除自定义事件*,语法:vm.$off( [event, callback] )
如果没有提供参数,则移除所有的事件*;(注意这条,一般在main.js中,移除所有事件绑定)
如果只提供了事件,则移除该事件所有的*;
如果同时提供了事件与回调,则只移除这个回调的*。

vue中$refs, $emit, $on, $once, $off的使用详解

父组件调用子组件的方法,可以传递数据。
父组件:

子组件:

子组件调用父组件的方法并传递数据。

子组件:

父组件:

兄弟组件之间相互传递数据。
首先创建一个vue的空白实例(兄弟组件的桥梁)

子组件a:发送放使用$emit自定义事件把数据带过去。

子组件b:接收方通过$on监听自定义事件的callback接收数据

父组件:

监听一个自定义事件,但是只触发一次。一旦触发之后,*就会被移除。
将on变成once,即只执行一次。

移除自定义事件*,语法:vm.$off( [event, callback] )
如果没有提供参数,则移除所有的事件*;(注意这条,一般在main.js中,移除所有事件绑定)
如果只提供了事件,则移除该事件所有的*;
如果同时提供了事件与回调,则只移除这个回调的*。

自定义vue点击事件传递数据

1.定义一个自定义TabControl.vue,定义它的点击事件

@click="itemClick(index),如下

2.实现itemClick(index)方法中,并通过this.$emit('tabClick',index);将点击事件传递到外面

3.在其Home.vue页面使用TabControl.vue

通过绑定tabClick的事件(也就是传出来的方法名)来监听控件的点击和数据传递

在Home.vue页面中定义方法tabItemClick来接收点击TabControl传过来的数据

Vue组件的使用

通过ref来获取页面上的dom

若在一个组件<item>中添加上ref,那么获取到的dom就是对应的组件,也就是可以获取到组件的引用。

可以获取到组件中定义的data数据

父组件传值给子组件通过属性来传。

过来的值赋值给定义的值,然后修改那个值

子组件通过事件触发来向父组件传值

定义一个全局组件

父组件给子组件通过属性传递一些值,而子组件做的一些约束就是组件的参数校验

父组件要传一个名叫content的属性,而子组件刚好定义了content的prop,这个就是props特性

非props特性

例如:给子组件的标签中定义一个click事件

上面的实现是错误的,原因就是在子组件中定义的@click中的click是监听的自定义事件的名称,它是接收子组件触发的事件名称,如:this.$emit('click'),@click是接收这样的事件的,并不是我们熟知的点击事件

实现上面的例子

方法一:

方法二

在click中添加.native就可标明为原生事件

方法一,使用Vuex

方法二,使用发布订阅模式,也称为总线机制

怎么使父组件给子组件优雅的传递dom,例如父组件要给子组件传递<p>Dell</p>

按以往的方法应该是

使用slot可以解决问题

如果template中有多个<slot>,那怎么确定哪个slot要那些dom呢

可以通过名称来确定对应的dom,如

通过动态组件来怎么实现呢

切换的时候,每次都是先销毁,然后再创建子组件,每次切换都销毁和创建

v-once就是为了避免这种情况的发生,使用v-once第一次展示的时候,会将组件放到内存中,第二次就不需要创建组件了,可以直接从内存中读取到

参考

Vue.js API文档

慕课网:Vue2.5开发去哪儿网App 从零基础入门到实战项目

比拉宠物还为您提供以下相关内容希望对您有帮助:

Vue——自定义组件 &amp; 自定义事件$emit &amp; 插槽slot

全局注册的组件可以用在任何新创建的 Vue 根实例 (new Vue) 的模板中。 使用 Vue.component 来创建全局组件。Vue.component的第一个参数就是组件名。emit()用于触发自定义事件。注意:事件名称中不能采用大写字母。效果:效果:slot 用于在组件的内部定义插槽,组件标签之间的所有html内容,会在插槽...

vue.js中怎样用onload事件

1、首先创建一个名称为onload的html文件,如下图所示。2、设置标题为 javascript onload,如下图所示。3、在body标签 中加入onload事件,并在事件中加入自定义函数 myonload。4、在文档区域加入一个h 元素,加入文本内容“页面加载完成显示页面内容”,当页面加载完成 后 显示该内容。5、创建一个自定义...

vue中$refs, $emit, $on, $once, $off的使用详解

首先创建一个vue的空白实例(兄弟组件的桥梁)子组件a:发送放使用$emit自定义事件把数据带过去。子组件b:接收方通过$on监听自定义事件的callback接收数据 父组件:监听一个自定义事件,但是只触发一次。一旦触发之后,监听器就会被移除。将on变成once,即只执行一次。移除自定义事件监听器,语法:vm.$off...

vue如何自定义element日期选择器组件添加日程

2、在Vue项目的入口文件中,导入Vue和Element-UI的库文件。3、创建一个日历组件,用来显示日历的基本布局和日期信息。4、在应用主页面中引入日历组件,来显示日历和日期选择器。5、最后使用import语句引入之前创建的日历组件,在components属性中注册,即可在vue自定义element日期选择器组件添加日程。

Vue.JS的自定义指令应该如何使用

// 做清理工作 // 比如移除在 bind() 中添加的事件监听器 }})一旦注册好自定义指令,你就可以在 Vue.js 模板中像这样来使用它(需要添加 Vue.js 的指令前缀,默认为 v-):如果你只需要 update 函数,你可以只传入一个函数,而不用传定义对象:...

vue 自定义组件使用v-model

v-model 是 Vue2 中唯一支持双向绑定的指令,用于表单控件绑定,但不代表它只能用在表单控件之上。在文档 使用自定义事件的表单输入组件 一节中提到了, v-model 其实是个语法糖。这不过是以下示例的语法糖:也就是说,你只需要在组件中声明一个name为value的props,并且通过触发input事件传入一个...

Vue——生命周期和钩子函数的一些理解

Vue生命周期简图 所谓生命周期钩子函数(简称生命周期函数),指的是组件的创建、更新、销毁三个阶段所触发执行的函数。根据每个阶段触发的钩子函数,我们可以相应的做一些操作,如获取后端接口数据、监听事件、执行事件、执行定时器、移除事件、清理定时器等等。生命周期根据上面的三个阶段分为:实例化期/组件...

vue最全的组件通信和插槽,看这一篇就够了

自定义事件 子给父传值 $emit bus事件总线 任意两个组件之间传值常用事件总线 或 vuex的方式。event bus vuex 唯一的全局数据管理者store,通过它管理数据并通知组件状态变更。边界情况 $parent/$root 兄弟组件之间通信可以通过共同祖辈搭桥 $parent 或$root children 父组件可以通过$c...

vue-photo-preview自定义功能

vue-photo-preview自定义功能设置方法如下。1、在Vue组件中引入vue-photo-preview插件,并注册为全局组件。2、在需要预览的图片元素上绑定@click事件,并在事件处理函数中调用VuePreview的open方法。3、在Vue.prototype中添加自定义方法,例如添加一个保存图片的方法。4、在组件中调用自定义方法。

在Vue中父子组件的数据传递、修改和更新是如何实现的(详细教程)_百度知...

通过修改这个数据就可以通过父组件实时更新子组件getinputdata(data) { console.log(data); data.background = { backgroundColor: 'yellow', border: 'none' };}子组件修改父组件的data在子组件中是修改不了父组件的data的,只有通过上面的$emit方法在父组件中修改数据。可参考vue官网的自定义事件...

Top