案例演示

需求:点击子组件触发一个事件改变父组件的字体大小。

  1. <div id="app">
  2. <p :style="{fontSize: fontSize + 'px'}">父组件的字体</p>
  3. <!-- 子组件模板中定义了一个enlarge-text事件,v-on监听该事件 -->
  4. <child v-on:enlarge-text="change"></child>
  5. <!-- v-on可以写成@ -->
  6. <child @enlarge-text="change"></child>
  7. </div>
  8. <script>
  9. // 注册子组件
  10. Vue.component("child", {
  11. data: function () {
  12. return {};
  13. },
  14. template: `
  15. <div class="child">
  16. <button v-on:click="$emit('enlarge-text')">放大父组件字体</button>
  17. <span>子组件的字体</span>
  18. </div>
  19. `,
  20. });
  21. // 父组件
  22. let vm = new Vue({
  23. el: "#app",
  24. data: function () {
  25. return {
  26. fontSize: 15,
  27. };
  28. },
  29. methods: {
  30. change() {
  31. this.fontSize++;
  32. },
  33. },
  34. });
  35. </script>

效果演示:

emit的意思是发出、发射。就是我在子组件写的v-on:click="$emit('enlarge-text')",当我点击按钮之后,$emit会把这个名为enlarge-text的方法发射到父组件层面,然后父组件监听child标签的enlarge-text,也就是<child v-on:enlarge-text="change"></child>,然后实现内部的逻辑。

$emit的第二个参数

使用$emit的第二个参数来决定父组件字体增加的px值为多少:

  1. <div id="app">
  2. <p :style="{fontSize: + fontSize + 'px'}">父组件的字体</p>
  3. <!-- 子组件 -->
  4. <child v-on:enlarge-text="change($event)"></child>
  5. <child v-on:enlarge-text="change(1)"></child>
  6. </div>

改变子组件template部分:

  1. Vue.component("child", {
  2. data: function () {
  3. return {};
  4. },
  5. template: `
  6. <div class="child">
  7. <button v-on:click="$emit('enlarge-text', 0.5)">放大父组件字体</button>
  8. <span>子组件的字体</span>
  9. </div>
  10. `,
  11. });

效果演示:

第一个组件增加父组件字体大小为0.5px,第二个是自加1px。

Vue $emit的更多相关文章

  1. 自用的基于Emit的C#下DataTable转实体类方法

    之前一直在做WebForm的开发,数据绑定时直接DataTable绑定Gridview很方便,但是最近开始往MVC转,数据列表的传递和页面展示基本上是以List为主,像下面这样,遍历实体类的各个字段去 ...

  2. angularjs $emit $on $broadcast 父子 兄弟之间传值

    父子之间 <div ng-controller="ParentCtrl"> <div ng-controller="ChildCtrl"> ...

  3. angularjs $broadcast $emit $on 事件触发controller间的值传递

    如何在作用域之间通信呢? 1.创建一个单例服务,然后通过这个服务处理所有子作用域的通信. 2.通过作用域中的事件处理通信.但是这种方法有一些限制:例如,你并不能广泛的将事件传播到所有监控的作用域中.你 ...

  4. 基础才是重中之重~Emit动态构建方法(参数和返回值)

    回到目录 对于Emit我们知道它的可以动态构建程序集,类型,方法,属性等,或者说只要手动使用C#创建的东西使用Emit也都可以动态创建它们,Emit由于它的特别之处,所以在很多领域得到了广泛的应用,像 ...

  5. 再谈使用Emit把Datatable转换为对象集合(List<T>)

    一.前因和存在的问题 前面我写了一篇<使用Emit把Datatable转换为对象集合(List<T>)>的博文,其实起源于我自己编写的一个orm工具(见前面几篇博文有介绍),里 ...

  6. DataTable转Entity(Emit版)

    public static List<T> ToList<T>(DataTable dt)        {            List<T> list = n ...

  7. 使用Emit把Datatable转换为对象集合(List<T>)

    Emit生成动态方法部分摘自网上,但是经过修改,加入了对委托的缓存以及类结构的调整,使之调用更简洁方便.大致的思路是:要实现转换datatable到某个指定对象的集合,本质是实现转换一个datarow ...

  8. QT 中 关键字讲解(emit,signal,slot)

    Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法.作为一种通用的处理机制,信号与反应槽非常灵活,可以携 ...

  9. IoC原理-使用反射/Emit来实现一个最简单的IoC容器

    从Unity到Spring.Net,到Ninject,几年来陆陆续续用过几个IoC框架.虽然会用,但也没有一直仔细的研究过IoC实现的过程.最近花了点时间,下了Ninject的源码,研究了一番,颇有收 ...

  10. vue

    vue.js 插件 setting--> plugins 搜索vue,下载安装如果想要高亮显示*.vue文件,可以在File Types 选项里找到HTML,然后在下方手动添加*.vue,这样就 ...

随机推荐

  1. 本文介绍使用windows系统自带的远程桌面mstsc连接Centos 7.x远程桌面的基本方法。

    本文介绍使用windows系统自带的远程桌面mstsc连接Centos 7.x远程桌面的基本方法. 一.前言 我希望用windows远程访问centos图形界面.xmanager连接centos远程桌 ...

  2. 攻防世界(一)baby_web

    攻防世界系列:baby_web 方法一: 按照提示,初始界面自然想到index.php,访问后界面(注意到URL)仍是1.php 打开hackbar查看响应,发现确实有index.php点开看到了Fl ...

  3. 给MySQL数据表加入uuid

    alter table table_name add column uuid VARCHAR(255) default "0" update table_name set uuid ...

  4. Linux(CentOS7)下rpm安装MySQL8.0.16

    记录一下自己在 CentOS7 下 rpm 安装 MySQL8.0.16 的过程. 一.准备工作 1. 下载MySQL所需要的安装包 从 MySQL官网 下载,上传至 CentOS 系统 /usr/l ...

  5. zookeeper之二:zookeeper3.7.0安装过程实操

    前面分享了zookeeper的基本知识,下面分享有关zookeeper安装的知识. 1.下载 zookeeper的官网是:https://zookeeper.apache.org/ 在官网上找到下载链 ...

  6. pytest + allure

    参考allure官网: https://docs.qameta.io/allure/#_pytest 1.使用命令pip install pytest-allure安装 注意:我遇到的一个现象,用命令 ...

  7. gpgpu-sim卡分配程序设计实例分析

    gpgpu-sim卡分配程序设计实例分析 运行代码地址:https://github.com/gpgpu-sim/gpgpu-sim_distribution 一.概述 此文件包含有关安装.生成和运行 ...

  8. JAVA复习题(一)基础知识

    类的构造方法描述正确的是( )A. 类中的构造方法不能省略B. 构造方法必须与类同名,但方法不能与class同名C. 构造方法在一个对象被new时执行D. 一个类只能有一个构造方法我的答案:C正确答案 ...

  9. WordPress安装篇(3):用宝塔面板在Linux上安装WordPress

    前面的文章已经介绍了如何在Windows环境安装WordPress,这篇文章来介绍在Linux环境怎样快速安装WordPress.大家都知道,Linux系统相对于Windows系统而言占用资源更少.更 ...

  10. 【NX二次开发】Block UI 属性类型

     Block UI 属性类型的读写总结: 帮助文件 NXOpen::BlockStyler::UIBlock::GetProperties() String类型 //设置值 this->块ID- ...