Vue非父子级通信
<div id="app">
<xz-todo></xz-todo>
</div>
<!--1. 为每个组件定义HTML 模板,有几个组件,就要创建几个template-->
<template id="tplTodo">
<div>
<h3>父组件xz-todo: 代办事项列表</h3>
<xz-todo-input></xz-todo-input>
<!--父要给子tasks(右),绑定在子的tasks属性(左)中-->
<xz-todo-list :tasks="tasks"></xz-todo-list>
</div>
</template>
<template id="tplTodoInput">
<div>
<h6>子组件xz-todo-input</h6>
<input v-model="input" @keyup.13="addFun"><button @click="addFun">添加</button>
</div>
</template>
<template id="tplTodoList">
<div>
<h6>子组件xz-todo-list</h6>
<ul>
<xz-todo-item v-for="(t,i) in tasks" :t="t" :i="i" @remove="removeHandler">
<!--当子组件触发remove时,就自动执行handler-->
</xz-todo-item>
</ul>
</div>
</template>
<template id="tplTodoItem">
<li>
<p>孙子组件xz-todo-item</p>
<span>{{t}}</span><button @click="removeFun">x</button>
</li>
</template>
<script>
var bus=new Vue();//先建公交车
//2. 除全局父组件外,为每个子组件创建对象
var xzTodoInput={
template:"#tplTodoInput",
data:function(){
return { input:"" }
},
methods:{
addFun(){
if(this.input.trim()!==""){
bus.$emit("add",this.input)
this.input="";
}
}
}
};
var xzTodoItem={//强调: 子组件对象必须先于父组件定义
template:"#tplTodoItem",
//因为子想要任务名(显示)和下标(删除)
props:["t","i"],
methods:{
removeFun(){
if(confirm("是否删除?"))
this.$emit("remove",this.i);
}
}
};
var xzTodoList={
template:"#tplTodoList",
props:["tasks"],//因为子想要tasks列表
components:{
//可用components继续包含更子级组件
xzTodoItem
},
methods:{
//当remove发生时,自动调用handler,获得子组件传来的i
removeHandler(i){
this.tasks.splice(i,1);
}
},
mounted(){
//this->Vue
bus.$on("add",input=>{//必须用=>
this.tasks.push(input)
})
}
};
//3. 定义全局父组件,components中仅包含直接子组件
Vue.component("xz-todo",{
template:"#tplTodo",
data:function(){
return {//1. 因为整个组件需要一个任务列表,所以:
tasks:[]
}
},
components:{//子组件
xzTodoInput,//xz-todo-input
xzTodoList //xz-todo-list
},
mounted(){//2. 在全局父组件中,加载并保存列表数据
this.tasks=["吃饭","睡觉","打豆豆"];
}
})
//4. new Vue()
new Vue({
el:"#app",
data:{}
})
</script>
Vue非父子级通信的更多相关文章
- Vue 非父子组件通信方案
Vue 非父子组件通信方案 概述 在 Vue 中模块间的通信很普遍 如果是单纯的父子组件间传递信息,父组件可以使用 props 将数据向下传递到子组件,而在子组件中可以使用 events (父组件需要 ...
- Vue 非父子组件通信
组件是Vue核心的一块内容,组件之间的通信也是很基本的开发需求.组件通信又包括父组件向子组件传数据,子组件向父组件传数据,非父子组件间的通信.前两种通信Vue的文档都说的很清楚,但是第三种文档上确只有 ...
- 详解Vue 非父子组件通信方法(非Vuex)
假设 bb 组件里面有个按钮,点击按钮,把 123 传递给 aa 组件 // 根组件(this.$root) new Vue({ el: '#app', router, render: h => ...
- vue父子组件及非父子组件通信
1.父组件传递数据给子组件 父组件数据如何传递给子组件呢?可以通过props属性来实现 父组件: <parent> <child :child-msg="msg" ...
- vue组件通信之非父子组件通信
什么顺序不顺序的.. 先来说说非父子组件通信. 首先,我们先来了解下vue中的 1.$emit 触发当前实例上的事件,附加参数都会传给监听器回调. 2.$on 监听当前实例上的自定义事件.事件可以 ...
- vue2.0父子组件以及非父子组件通信
官网API: https://cn.vuejs.org/v2/guide/components.html#Prop 一.父子组件通信 1.父组件传递数据给子组件,使用props属性来实现 传递普通字符 ...
- vue2.0父子组件以及非父子组件通信传参详解
1.父组件传递数据给子组件 父组件数据如何传递给子组件呢?可以通过props属性来实现 父组件: <parent> <child :child-msg="msg" ...
- vue非父子组件间通信
有时候非父子关系的组件也需要通信.在简单的场景下,使用一个空的Vue实例作为中央事件总线: 有时候非父子关系的组件也需要通信.在简单的场景下,使用一个空的 Vue 实例作为中央事件总线: var bu ...
- vue 2 使用Bus.js进行兄弟(非父子)组件通信 简单案例
vue2中废弃了$dispatch和$broadcast广播和分发事件的方法.父子组件中可以用props和$emit().如何实现非父子组件间的通信,可以通过实例一个vue实例Bus作为媒介,要相互通 ...
随机推荐
- [macOS] git忽略所有的.DS_Store文件
最彻底的方法如下: vi ~/.gitignore_global 输入以下内容 # OS generated files # ###################### .DS_Store .DS_ ...
- 【数据结构】算法 LinkList (Insertion Sort List 链表插入排序)
将一个单链表进行处理后,所得结果为一有序链表 Solution: 将原始链表逐个查询,插入新链表,在插入的同时对链表进行排序.时间复杂度O(n*n) public ListNode insertion ...
- sql server中的开窗函数over、视图、事物
一.开窗函数over的作用有两个: 1.排序order by,row_number,翻页 2.划区partition by,结合聚合函数针对某部分数据进行汇总 翻页的sql server 语句: an ...
- ansible批量管理
编写批量安装脚本 [root@m01 scripts]# vim install.sh for ip in $* do echo "=======start install to $ip = ...
- C# 链表去重 List 一维 二维 分别使用 Distinct() GroupBy() 方法
分别使用List中Distinct(),GroupBy()实现链表的去重. 1.先上效果: 一维链表中分别有元素“aa”,"bb",'aa','aa',"cc" ...
- CMOS门电路
参考:https://wenku.baidu.com/view/8582501e964bcf84b9d57bd3.html 1. CMOS与非门(P并N串) 2. CMOS或非门(N并P串 ...
- Qt框架及模块认识
小白自工作就接触Qt,一直都在使用Qt5.3.1版本,所以没有经历过大牛们把项目从Qt4程序到Qt5的烦恼,没准以后会碰到.对Qt所有的丰富的API表示惊叹,对于Qt的框架及模块认识也是极为模糊的,文 ...
- Holer服务端软件使用
用户可以下载 holer-server.zip 搭建自己的Holer服务端. 1. 搭建Holer服务端准备工作 (1) 准备一台Linux系统或者Windows系统主机: (2) 安装Java 1. ...
- 详解设计模式在Spring中的应用
设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. 今天,在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了其设 ...
- Linux 系统调用(system call)
1 系统调用:(SYSTEM CALL) 操作系统(operating system)内核中有一组实现系统功能的过程,系统调用就是对上述过程的调用.程序员利用系统调用,向OS提出服务请求,由OS代为完 ...