Vue $emit
案例演示
需求:点击子组件触发一个事件改变父组件的字体大小。
<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的更多相关文章
- 自用的基于Emit的C#下DataTable转实体类方法
之前一直在做WebForm的开发,数据绑定时直接DataTable绑定Gridview很方便,但是最近开始往MVC转,数据列表的传递和页面展示基本上是以List为主,像下面这样,遍历实体类的各个字段去 ...
- angularjs $emit $on $broadcast 父子 兄弟之间传值
父子之间 <div ng-controller="ParentCtrl"> <div ng-controller="ChildCtrl"> ...
- angularjs $broadcast $emit $on 事件触发controller间的值传递
如何在作用域之间通信呢? 1.创建一个单例服务,然后通过这个服务处理所有子作用域的通信. 2.通过作用域中的事件处理通信.但是这种方法有一些限制:例如,你并不能广泛的将事件传播到所有监控的作用域中.你 ...
- 基础才是重中之重~Emit动态构建方法(参数和返回值)
回到目录 对于Emit我们知道它的可以动态构建程序集,类型,方法,属性等,或者说只要手动使用C#创建的东西使用Emit也都可以动态创建它们,Emit由于它的特别之处,所以在很多领域得到了广泛的应用,像 ...
- 再谈使用Emit把Datatable转换为对象集合(List<T>)
一.前因和存在的问题 前面我写了一篇<使用Emit把Datatable转换为对象集合(List<T>)>的博文,其实起源于我自己编写的一个orm工具(见前面几篇博文有介绍),里 ...
- DataTable转Entity(Emit版)
public static List<T> ToList<T>(DataTable dt) { List<T> list = n ...
- 使用Emit把Datatable转换为对象集合(List<T>)
Emit生成动态方法部分摘自网上,但是经过修改,加入了对委托的缓存以及类结构的调整,使之调用更简洁方便.大致的思路是:要实现转换datatable到某个指定对象的集合,本质是实现转换一个datarow ...
- QT 中 关键字讲解(emit,signal,slot)
Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法.作为一种通用的处理机制,信号与反应槽非常灵活,可以携 ...
- IoC原理-使用反射/Emit来实现一个最简单的IoC容器
从Unity到Spring.Net,到Ninject,几年来陆陆续续用过几个IoC框架.虽然会用,但也没有一直仔细的研究过IoC实现的过程.最近花了点时间,下了Ninject的源码,研究了一番,颇有收 ...
- vue
vue.js 插件 setting--> plugins 搜索vue,下载安装如果想要高亮显示*.vue文件,可以在File Types 选项里找到HTML,然后在下方手动添加*.vue,这样就 ...
随机推荐
- Pulsar 下一代消息平台
引言 提起成熟的消息队列或消息引擎,毋庸置疑,大多数人的第一反应一定是 Kafka. Kafka 能够彻底满足海量数据场景下高吞吐.高并发需求,在短短几年内,已经被阿里.腾讯.百度.字节跳动.Netf ...
- node.js module初步理解-(转载)
在开发一个复杂的应用程序的时候,我们需要把各个功能拆分.封装到不同的文件,在需要的时候引用该文件.没人会写一个几万行代码的文件,这样在可读性.复用性和维护性上都很差,几乎所有的编程语言都有自己的模块组 ...
- 11.15 dmidecode:查询系统硬件信息
dmidecode命令可以用来在Linux系统下获取硬件方面的信息.dmidecode遵循SMBIOS/DMI标准,其输出的信息包括BIOS.处理器.内存.缓存等. dmidecode命令的参数选项及 ...
- Centos7 搭建vsftpd
1.安装vsftpd 在线安装:yum -y install vsftpd 离线安装:下载vsftp的rpm包,通过rpm -ivh xxx.rpm安装 2.修改/etc/vsftpd/vsftpd. ...
- Docker无法正常启动的原因及解决办法
一.Docker启动异常表现: 1.状态反复restaring,用命令查看 $docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS ...
- RAM与FLASH
以前一直使用STM32但是对 变量 或 函数 的存储域没做任何了解:只知道你需要存储的东西就放在Flash的后面几页就好了:这次接触到STM8发现编译器里面有特别的存储查看器就打算看看到底是怎么存储的 ...
- Navigation 实现不同fragment之间的view的共享(含动画过渡)
以imageView的共享举例 两个fragment都要有各自的imageview视图,id可以不同,但transitonName一定要相同, 都要指定相同的src 例如: fragment A &l ...
- 详述盒子模型(包含padding、border、margin的详细用法和描述)
提起盒子模型,我想无论是对于一个前端资深开发人员还是前端入门开发人员来说都不陌生,这是CSS最基础的知识. 但是惭愧地说,我之前理解的盒子模型,只是文字上的理解.我知道定义一个元素的宽度和高度时,设置 ...
- Scrapy中的错误
TabError: Inconsistent use of tabs and spaces in indentation 需要将 .py 文件中的使用 tab 做的空格符删掉,打成空格符.任何一个 ...
- Sql server 多列去重复值,相同的只显示一条数据
CREATE TABLE #tp( headerNo VARCHAR(10), machineNO VARCHAR(10), descrption nVARCHAR(20), artNo VARCHA ...