首页 > 其他 > 详细

Vue(七):组件的自定义事件

时间:2020-05-26 17:11:27      阅读:53      评论:0      收藏:0      [点我收藏+]

3、组件自定义事件

  1)、大小写的问题
  vue官网很是强调这个问题呀,基本能说一次的都要说一次。中心思想就是要你使用kebab-case的命名方式。当然,希望大家注意,指的是事件名,而不是方法名。举一个简单的栗子吧

<base-span @my-event="fun1"></base-span>  //父级调用代码,调用fun1方法,当然,也可以写一些简单的js表达式
fun1(){alert("help");}  //fun1方法

this.$emit(‘my-event‘);  //子级触发方式,如果父级调用的fun1有参数,可在事件名后面添加要传入的参数

  2)、v-model
  v-model主要利用的是组件中的value属性和input事件,但是有时候,value值和input事件有其他的作用,比如单选框和复选框,这个时候我们就需要自定义v-model。主要引用的就是model属性,设置默认绑定的值和事件。上个官网的栗子:

Vue.component(‘base-checkbox‘, {
  model: {
    prop: ‘checked‘,
    event: ‘change‘
  },
  props: {
    checked: Boolean  //这个是必须要声明的
  },
  template: `
    <input
      type="checkbox"
      v-bind:checked="checked"
      v-on:change="$emit(‘change‘, $event.target.checked)"
    >
  `
})  //v-model绑定的值就是bool值了

  3)、将原生事件绑定到组件
  当我们调用一个组件时,比如说我想监控它原生的事件怎么办呢?在原生的事件后面加上.native,比如@focus.native=""。但是如果该组件的根元素没有focus事件,但是其他元素里面有,我们想监听那个元素的focus事件怎么办呢?使用$listeners属性,它和我们上篇谈到的$attrs差不多,只不过$attrs是包含了父级的所有属性,而$listeners是包含了父级所有的事件。使用方法也一样,直接绑定到你想绑定的元素上面,就可以调用对应的事件了。

<div><input v-on="$listeners"></div>  //这是template中的代码,div代表根元素

 

Vue(七):组件的自定义事件

原文:https://www.cnblogs.com/liangshibo/p/12966378.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!