vue.js中$emit的理解

官网介绍比较简单

例子:$emit(‘increment1‘,[12,‘kkk‘]),直接看是懵逼的有没有,可以先告诉你,就是触发自定义事件increment1(或者函数名吧),[]为参数

上案例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="counter-event-example">
            <p>{{ total }}</p>
            <button-counter v-on:increment1="incrementTotal"></button-counter>
            <button-counter v-on:increment2="incrementTotal"></button-counter>
        </div>
    </body>
    <script src="vue/vue.min.js"></script>
    <script>
        Vue.component(‘button-counter‘,{
            template:‘<button v-on:click="increment">{{ counter }}</button>‘,
            data:function(){
                return {counter: 0}//组件数据就是这样的,函数式的,请注意
            },
            methods:{
                increment:function(){
                    this.counter += 1;
                    this.$emit(‘increment1‘,[12,‘kkk‘]);//$emit
                }
            }
        });
        new Vue({
            el:‘#counter-event-example‘,
            data:{
                total:0
            },
            methods:{
                incrementTotal:function(e){
                    this.total += 1;
                    console.log(e);
                }
            }
        });
    </script>
</html>

先看组件 button-counter

绑定了事件click————>increment

然后 this.counter += 1; this.$emit(‘increment1‘,[12,‘kkk‘]);

这边就是触发事件 increment1,参考文献里面有点乱,这边是不是清晰多了

然后 <button-counter v-on:increment1="incrementTotal"></button-counter>

v-on相当于监听吧,就触发 incrementTotal

输出// [12, "kkk"]

有没有很清晰,若有理解不对的地方,请指正


参考:http://arinu.me/?p=50

时间: 2024-10-22 18:58:21

vue.js中$emit的理解的相关文章

对Vue.js $watch方法的理解

博主最近对着vue.js的官方教程在自学vue.js,博主自幼愚钝,在教程中真的是好多点都不太理解,接下来要说的这个$watch方法就是其中一个不太理解的点了.咱们先来看一下对于$watch方法在vue.js的API中是怎么解释的吧:观察 Vue 实例变化的一个表达式或计算属性函数.回调函数得到的参数为新值和旧值.表达式只接受监督的键路径.对于更复杂的表达式,用一个函数取代.官方示例: 1 // 键路径 2 vm.$watch('a.b.c', function (newVal, oldVal)

Vue.js 从源码理解v-for和v-if的优先级的高低

在vue.js里面,v-for和v-if是可以一起使用作用在某个元素上,网上看到一篇文章说永远不要把v-for和v-if同时用在同一个元素上,感觉有点瞎扯,官网也注明了可以一起使用的,还把两个指令的优先级给说明了: 当v-if和v-for一起使用时,v-for的优先级更高,为了方便理解举个栗子: <div id="app"> <ul> <li v-for="item in Nums" v-if="item%2==0"

前端组件:超好用的日期选择器,支持全部日期格式已经Vue.js中的使用

首先官网地址:https://www.layui.com/laydate/ 高达11w的下载量 效果: 怎么使用这个呢? 首先当然就是导包了,自己去官网下哈 需要主注意的是, laydate.js 和theme文件下要放在同一级目录,自己也可以在laydate.js搜索关键字 theme 去修改对应路径,为了省去麻烦咋们就直接放在同级目录. 一般js的使用 Date.prototype.Format = function (formatStr) { var str = formatStr; va

Vue.js学习笔记(1)

数据的双向绑定(ES6写法) 效果: 没有改变 input 框里面的值时 将input 框里面的值清空时: 重新给  input 框输入  豆豆 后页面中  span  里绑定{{testData.name}}的值随着 input 框值的变化而变化. 在Vue.js中可以使用v-model指令在表单元素上创建双向数据绑定.并且v-model指令只能用于:<input>.<select>.<textarea>这三种标签. <template> <div&

Vue.js 组件 component

什么是组件? 组件(component)是Vue.js最强大的功能之一,核心目标是扩展HTML元素,封装可重用的代码.我们可以把组件代码按照template.style.script的拆分方式,放置到对应的 .vue  文件中. Vue.js的组件可以理解为预先定义好行为的ViewModel类,一个组件可以预定义很多选项,但最核心的是以下几个: 模板(template) --  模板声明了数据和最终展现给用户的DOM之间的映射关系 初始数据(data) --  一个组件的初始数据状态.对于可复用

Vue.js:轻量高效的前端组件化方案(转载)

摘要:Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在GitHub上已经有5000+的star.本文将从各方面对Vue.js做一个深入的介绍. Vue.js 是我在2014年2月开源的一个前端开发库,通过简洁的 API 提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在 GitHub上已经有5000+的star.本文将从各方面对Vue.js做一个深入的介绍. 开发

vue.js学习笔记(4)— 父子组件之间通信的第一种方式 props 和 $emit

我们知道,vue组件中,父组件把数组传递给子组件的话,通常是使用props传递,而vue规定,prop是只能单向下行传递的,那么子组件要怎么才能实现数据的向上传递呢,这里引述一个概念:"父子组件的关系:prop向下传递,事件向上传递",上一篇文章当中,关于数据向上传递用到的事件方法 $emit() 也进行了详细的说明,不懂的童鞋可以翻回去看一下.下面就是今天要说的父子组件相互通信的问题,点击效果依次如下: 代码如下: <!DOCTYPE html> <html>

如何理解vue.js组件的作用域是独立的

vue.js组件的作用域是独立,可以从以下三个方面理解: 1.父组件模板在父组件作用域内编译,父组件模板的数据用父组件内data数据:2.子组件模板在子组件作用域内编译,子组件模板的数据用子组件内data数据,如果要用父组件的必须用props传递:3.子组件标签的数据,使用父组件内的data数据 案例代码: <div id="demo"> <my-component v-if="show" v-bind:my-message="messa

Vue.js 源码全方位深入解析(同步更新中)

第1章 准备工作介绍了 Flow.Vue.js 的源码目录设计.Vue.js 的源码构建方式,以及从入口开始分析了 Vue.js 的初始化过程. 1-1 课程简介1-2 准备工作1-3 认识 Flow-文档1-4 认识 Flow1-5 Vue.js 源码目录设计-文档1-6 Vue.js 源码目录设计1-7 Vue.js 源码构建-文档1-8 Vue.js 源码构建1-9 从入口开始-文档1-10 从入口开始第2章 数据驱动详细讲解了模板数据到 DOM 渲染的过程,从 new Vue 开始,分析