案例演示

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

<div id="app">
<p :style="{fontSize: fontSize + 'px'}">父组件的字体</p>
<!-- 子组件模板中定义了一个enlarge-text事件,v-on监听该事件 -->
<child v-on:enlarge-text="change"></child>
<!-- v-on可以写成@ -->
<child @enlarge-text="change"></child>
</div>
<script>
// 注册子组件
Vue.component("child", {
data: function () {
return {};
},
template: `
<div class="child">
<button v-on:click="$emit('enlarge-text')">放大父组件字体</button>
<span>子组件的字体</span>
</div>
`,
}); // 父组件
let vm = new Vue({
el: "#app",
data: function () {
return {
fontSize: 15,
};
},
methods: {
change() {
this.fontSize++;
},
},
});
</script>

效果演示:

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

$emit的第二个参数

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

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

改变子组件template部分:

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

效果演示:

第一个组件增加父组件字体大小为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. Lombok 插件安装和使用

    引言 以前的 Java 项目中,充斥着太多毫无技术含量的代码,比如类属性的 getter/setter/toString 方法,还有就是异常处理.I/O 流的关闭操作等.这些样板代码虽然可以通过 ID ...

  2. 在 Kubernetes 集群在线部署 KubeSphere

    https://github.com/kubesphere/ks-installer/blob/master/README_zh.md https://kubesphere.com.cn/docs/i ...

  3. Kubernetes集群搭建 ver1.20.5

    目录 部署方式 1. 基础环境准备 1.1 基础初始化 1.2 安装docker 2. 部署harbor及haproxy高可用反向代理 2.1 镜像加速配置 2.2 高可用master可配置 3. 初 ...

  4. Azure Synapse Link for Dataverse

    MyBuild - Scale, analyze and serve Microsoft Dynamics 365 application data with Azure 本周的微软Bulid大会上发 ...

  5. Docker五分钟搭建Wordpress

    当你看到这篇文章的时候,表明你已经有docker的基础知识了,或者可以看上一篇文章 Docker 入门教程. 传统的使用wordpress搭建网站,意味着你需要搭建以下四个环境: php: apach ...

  6. 为什么Android源码中都使用16进制进行状态管理?

    前言 在Android源码中,对于"多状态"的管理总是通过16进制数字来表示,类似这种格式: //ViewGroup.java protected int mGroupFlags; ...

  7. pika详解 (一)

    pika详解 (一) 本文链接:https://blog.csdn.net/comprel/article/details/94592316 pika pika处理消息可以简单分为以下几个步骤: 我们 ...

  8. 不是都需要ARM吗?

    不是都需要ARM吗? ARM系统架构简介 什么是ARM处理器,为什么没有听说? ARM-缩写:Advanced RISC Machines 该处理器起源于1984年的英格兰.在成立之初,ARM代表Ac ...

  9. VB 老旧版本维护系列---兜兜转转有点晕:从服务器通过URL不中转保存的下载

    从服务器通过URL不中转保存的下载 首先引用System.dll 然后新开一个页面,空的,在后台Page_Load方法里写   Dim docPath As String ="" ...

  10. Java Object类中toString方法的重写

    Object类中的tostring方法的: 当我们输出一个对象时,实际是输出的是这个类中的tostring方法,是一个地址值,而不是类中的属性. 1 一:子类没有重写Object类中的toStrinn ...