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作为媒介,要相互通 ...
随机推荐
- git宝典—应付日常工作使用足够的指北手册
最近公司gitlab又迁移,一堆git的命令骚操作,然鹅git命令,感觉还是得复习下——其实,git现在界面操作工具蛮多,比如intellij 自带的git操作插件就不错,gitlab github ...
- RNA-seq workflow
SRAtoolkit download .fa http://www.genomicdataanalysis.com/genomicdatatype/rna-seq/
- sitecore8.2 如何关闭性能计数器
在Sitecore.config文件或补丁文件修改Counters.Enabled为false值,此key默认为true;然后再修改Sitecore.Tasks.CounterDumpAgent 时间 ...
- mac系统如何处理来自身份不明的开发者
打开终端(终端在 应用程序 -> 实用工具 内) sudo spctl --master-disable
- spring-boot 2.1.2.RELEASE bug
不打印映射地址日志: 改用 2.0.5 RELEASE 即可
- 字符串Contains匹配失效
参考博客:https://blog.csdn.net/lewky_liu/article/details/79353151 在编码过程中发现一个很神奇的事情,使用String.contains方法失效 ...
- left join on +多条件与where区别
left join on +多条件与where区别 重点 先匹配,再筛选where条件. 本文将通过几个例子说明两者的差别. 1. 单个条件 select * from product a left ...
- leetcode 1——两数之和
问题描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组 ...
- FairyGUI TextField
记录一个在使用FairyGUI的TextField时遇到的坑. TextField有一个文本模板功能,可以实现类似占位符的功能,如:{ number = 0 },然后我们可以在脚本中修改number的 ...
- BZOJ 4195: [Noi2015]程序自动分析 并查集+离散化
LUOGU 1955BZOJ 4195 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量 ...