子组件派发事件和值给父组件

简介: 《Vue实战》系列

API

子组件通过$emit派发事件和值给父组件(值可以有多个)

this.$emit('fnX', value)

父组件通过v-on绑定子组件派发的事件,并触发一个新的事件,新的事件内可以接收传来的值

<ComponentName @fnX="fnY"></ComponentName>
methods: {
    fnY(value) {
        console.log(value)
    }
}

父子组件间传递数据 demo

See the Pen  mdJVqgg by xugaoyi (@xugaoyi)   on CodePen.

Prop 验证 与 非 Prop 的 Attribute

Prop 验证

API

子组件对父组件传递来的参数进行校验

Vue.component('my-component', {
  props: {
    // 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证)
    propA: Number,
    // 多个可能的类型
    propB: [String, Number],
    // 必填的字符串
    propC: {
      type: String,
      required: true
    },
    // 带有默认值的数字
    propD: {
      type: Number,
      default: 100
    },
    // 带有默认值的对象
    propE: {
      type: Object,
      // 对象或数组默认值必须从一个工厂函数获取
      default: function () {
        return { message: 'hello' }
      }
    },
    // 自定义验证函数
    propF: {
      validator: function (value) {
        // 这个值必须匹配下列字符串中的一个
        return ['success', 'warning', 'danger'].indexOf(value) !== -1
      }
    }
  }
})

非 Prop 的 Attribute

API

当子组件没有定义对应的Prop来接收父组件传来的值时,这个值将会出现在组件根元素的Attribute上面。

用处

例如,想象一下你通过一个 Bootstrap 插件使用了一个第三方的 <bootstrap-date-input> 组件,这个插件需要在其 <input> 上用到一个 data-date-picker attribute。我们可以将这个 attribute 添加到你的组件实例上:

<bootstrap-date-input data-date-picker="activated"></bootstrap-date-input>

然后这个 data-date-picker="activated" attribute 就会自动添加到 <bootstrap-date-input>组件的根元素上。


相关文章
|
小程序 前端开发 JavaScript
微信小程序(二十二)子组件调用父组件方法,父组件调用子组件方法
制作了一个自定义组件,底部弹出菜单。 显示这个菜单的时候,首先,父组件需要调用子组件的方法,显示子组件。 点击子组件的菜单,需要调用父组件的方法进行逻辑处理。
301 0
|
JavaScript
Vue子组件监听父组件的事件
Vue子组件监听父组件的事件
332 0
Vue子组件监听父组件的事件
|
3月前
|
JavaScript
Vue在子组件中判断父组件是否传来事件
本文介绍了在Vue中如何通过`vm.$listeners`对象来判断父组件是否传递了特定的事件给子组件,并展示了如何检查事件是否存在以及相应的处理方法。
193 0
Vue在子组件中判断父组件是否传来事件
|
7月前
|
JavaScript
在父组件中使用子组件时,如何保证子组件的实例在父组件的生命周期中得到正确的更新?
在父组件中使用子组件时,如何保证子组件的实例在父组件的生命周期中得到正确的更新?
35 2
|
7月前
|
JavaScript
Vue2中子组件调用父组件的方法,父组件调用子组件的方法,父子组件互相传值和方法调用
Vue2中子组件调用父组件的方法,父组件调用子组件的方法,父子组件互相传值和方法调用
Vue2中子组件调用父组件的方法,父组件调用子组件的方法,父子组件互相传值和方法调用
|
7月前
父组件可以监听到子组件的生命周期吗
父组件可以监听到子组件的生命周期吗
37 0
|
7月前
|
小程序
子组件调用父组件的方法并传递数据
子组件调用父组件的方法并传递数据
|
JavaScript 前端开发 C++
04、props接收父组件的数据
04、props接收父组件的数据
|
人工智能 自然语言处理 JavaScript
vue 父组件将异步请求回来的数据传递给子组件,子组件props可以接收到,但是没有值
vue 父组件将异步请求回来的数据传递给子组件,子组件props可以接收到,但是没有值
78 0