Xin's blog Xin's blog
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
    • Vue
    • 组件与插件
    • CSS扩展语言
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架面试题汇总
  • 基本面试题
  • 进阶面试题
  • 其它
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 前后端联调
  • mock.js
  • 奇技淫巧
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)

Xin

英雄可不能临阵脱逃啊~
首页
  • 前端文章

    • HTML
    • CSS
    • JavaScript
    • Vue
    • 组件与插件
    • CSS扩展语言
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
  • 前端框架面试题汇总
  • 基本面试题
  • 进阶面试题
  • 其它
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 前后端联调
  • mock.js
  • 奇技淫巧
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)
  • HTML

  • CSS

  • JavaScript

  • Vue

    • 知识点

    • 方法

    • vue API

      • 全局api
      • 数据
      • 生命周期
      • 组合
      • 实例property
      • 实例方法 数据
      • 实例方法 事件
        • 指令
    • 组件与插件

    • css扩展语言

    • 学习笔记

    • 前端
    • Vue
    • vue API
    ctrlwin
    2021-07-09

    实例方法 事件

    # 实例方法 / 事件

    # vm.$on(event, callback)

    • 参数:

      • {string | Array<string>} event (数组只在 2.2.0+ 中支持)
      • {Function} callback
    • 用法:

      监听当前实例上的自定义事件。事件可以由 vm.$emit 触发。回调函数会接收所有传入事件触发函数的额外参数。

    • 示例:

      <template>
      	<el-button type="primary" @click="isClick">点击</el-button>
      </template>
      
      <script>
        export default {
          methods: {
            isClick() {
              this.$emit('isLeft', '点击事件!');
            }
          },
          mounted() {
            this.$on('isLeft', (val) => {
              console.log(val);
            });
          }
        }
      </script>
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18

      以上代码,通过按钮的点击事件触发事件,由$emit传递事件,最后由$on捕获事件。

      监听多个事件的话可以使用数组的方式:

      this.$on(['isLeft', 'isRight'], (val) => {
          console.log(val);	
      });
      
      1
      2
      3

    # vm.$once(event, callback)

    • 参数:

      • {string} event
      • {Function} callback
    • 用法:

      与$on类似,监听一个自定义事件,但是只触发一次。一旦触发之后,监听器就会被移除。

    # vm.$off([event, callback])

    • 参数:

      • {string | Array<string>} event (只在 2.2.2+ 支持数组)
      • {Function} [callback]
    • 用法:

      移除自定义事件监听器。

      • 如果没有提供参数,则移除所有的事件监听器;
      • 如果只提供了事件,则移除该事件所有的监听器;
      • 如果同时提供了事件与回调,则只移除这个回调的监听器。

    # vm.$emit(eventName, [...args])

    • 参数:

      • {string} eventName
      • [...args]

      触发当前实例上的事件。附加参数都会传给监听器回调。

    • 示例

      // 子组件
      <button @click="$emit('childClick', data)"
      
      // 父组件
      <child-component @childClick='childClick' />
       ...
      methods:{
          childClick(val){
              console.log(val)
          }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
    在GitHub上编辑 (opens new window)
    #vue
    上次更新: 2/23/2022, 5:36:03 PM

    ← 实例方法 数据 指令→

    最近更新
    01
    createElement函数创建虚拟DOM
    05-26
    02
    clipboard 剪切板属性
    05-26
    03
    vue的权限管理
    05-16
    更多文章>
    Theme by Vdoing | Copyright © 2021-2022 Xin | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×