技术标签: vue
A父、B子、C孙
组件传值的时候会用到A组件在B组件传递值,B组件会通过 $attrs获取到不在B组件props里面的所有属性,B组件通过在C组件上绑定 $attrs 和 $listeners 使C组件获取A组件传递的值并且可以调用在A组件那里定义的方法
多级组件嵌套需要传递数据时,通常使用的方法是通过vuex。但如果仅仅是传递数据,而不做中间处理,使用 vuex 处理,未免有点大材小用。为此Vue2.4 版本提供了另一种方法-- $ attrs/ $listeners
$ attrs:包含了父作用域中不被 prop 所识别 (且获取) 的特性绑定 (class 和 style 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过 v-bind="$attrs" 传入内部组件。通常配合 interitAttrs 选项一起使用。
$ listeners:包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。它可以通过 v-on="$listeners" 传入内部组件
例子:
// A组件
<template>
<div class="home">
<el-link type="primary" @click="change">测试vuex修改参数,其他页面响应式改变</el-link>
<!-- $attrs和$listeners -->
<Son :name="name" @change="change"></Son>
</div>
</template>
<script>
import Son from '@/components/attrsListeners/son.vue'
export default {
name: 'Home',
components: {
Son
},
data() {
return {
params: {},
name: 'suzilong',
aa: '$attrs和$listeners用法'
}
},
computed: {
// ...mapGetters(["sidebar"])
sidebar() {
return this.$store.getters.sidebar
}
},
methods: {
change() {
console.log(this.$store)
// this.params = this.$store.getters.sidebar
this.$store.dispatch("app/sideBar", "hello suzilong")
}
}
}
</script>
B组件:不使用props获取时,可以使用 $attrs获取。当使用props获取时,不可以使用 $attrs获取
//B组件
<template>
<div>
<div>第二级组件</div>
<div>{
{ $attrs }}-----$attrs</div> //{ "name": "suzilong" }
<div>{
{ $attrs.name }}---第二级组件</div> //suzilong
<div>{
{ $attrs.aa}}---第二级组件</div> //undefined
<div>{
{ aa }}---第二级组件</div> //$attrs和$listeners用法
<Sun v-bind="$attrs" v-on="$listeners"></Sun>
</div>
</template>
<script>
import Sun from '@/components/attrsListeners/sun.vue'
export default {
name: 'Son',
components: { Sun },
props: {
aa: {
type: String,
default: () => {
return ""
}
}
}
}
</script>
C组件获取A值并调取A组件方法
// C组件
<template>
<div>
<div>第三级组件</div>
<button @click="btn">点击</button>
<div>{
{ $attrs }}</div> //{ "name": "suzilong" }
</div>
</template>
<script>
export default {
name: 'Sun',
methods: {
btn() {
//调取A组件的事件
this.$emit("change")
}
}
}
</script>
简单来说:$ attrs与$ listeners 是两个对象,$ attrs 里存放的是父组件中绑定的非 Props 属性,$ listeners里存放的是父组件中绑定的非原生事件
手机贴图:代码: 1 #include "stdio.h" 2 3 int main() { 4 5 int (*p)[4],i,j; 6 int a[5][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16},{17,18,19, 20}}; 7 p = a; 8 ...
Python源代码剖析笔记3-Python执行原理初探本文简书地址:http://www.jianshu.com/p/03af86845c95 之前写了几篇源代码剖析笔记,然而慢慢觉得没有从一个宏观的角度理解python执行原理的话,从底向上分析未免太easy让人疑惑。不如先从宏观上对python执行原理有了一个基本了解,再慢慢探究细节。这样或许会好非常多。这也是近...
WPF:AutoCompleteBox,一个自动完成的文本框 1、安装WPF工具包2、引用正确的命名空间3、将AutoCompleteBox添加到视图中4、自定义AutoCompleteBox5、在自定义类中使用AutoCompleteBox6、多字段搜索这个WPF工具包包括AutoCompleteBox控制室。顾名思义,它是一个自动完成文本框控件。在本文中,我们将展示如何安装工具包以及如何使用...
在cs文件中多加一行代码,其思路如下:(1)设置一个css类: .hidden{display:none;} (2)随后在GridView的列编辑对话框中,对需要进行隐藏的列进行设置,分别设置FootStyle,HeaderStyle,ItemStyle的CssClass属性为“hidden”Ok,这样我们就实现了隐藏列的目的,同时又能保证对其进行数据绑定。
npm install --save egg-sequelize mysql2在 config/plugin.js 中引入 egg-sequelize 插件exports.sequelize = { enable: true, package: 'egg-sequelize',};在 config/config.default.js 中编写 sequelize 配置config.sequelize = { dialect: 'mysql', host: '127.
肿瘤专业的小伙伴一定经常用到生存曲线,1928 年生存曲线(又称存活曲线)首次由美国生物学家雷蒙・普尔提出,它可以反映不同种群在每个年龄段生存的数目。1958 年,Edward L. Kaplan 和 Paul Meier 也首次在临床研究中提出了生存曲线的概念,又被称作 Kaplan-Meier 曲线,主要用来对各组患者的生存状况进行描述。而作图神器 graphpad prism 8.0 也可以...
CASCAS协议原理应用场景传统方式及弊端CAS协议原理概念解释组成部分CAS基本流程CAS协议的具体流程及细节建立单点登录,首次访问豆瓣第二次访问豆瓣读书首次访问豆瓣电影单点登出(SLO)代码实现(基于Flask)CAS协议原理应用场景豆瓣公司旗下的有多种服务,豆瓣用户需要一次登录就实现豆瓣旗下所有服务的登录。豆瓣电影、豆瓣读书、豆瓣音乐、豆瓣同城等。以上场景即为单点登录。传统方...
(148)北京理工大学远程教育学院2019-2020学年第二学期《管理系统计算机仿真》期末试卷(B)要答案:1119571153一、判断正误(10分)(正确:√;错误:╳)1.仿真的基本思想是利用物理的和数学的模型来类比模仿现实过程,以寻求过程和规律,它的理论基础是相似性原理。()2.1773年,法国物理学家Buffon设计了投针实验,通过实验发现了随机投针实验的结果与圆周率之间的关系。()3.系...
LabVIEW2020(32位) 连接和读写MySQL数据库系列教程 1、LabVIEW2020(32位) 连接和读写MySQL数据库(WIN10系统+Visual Studio 2019+64位MySQL8.0+64位Connector/ODBC)(一) 实现字符串常量往数据库写多个字段。 2、LabVIEW2020(32位) 连接和读写MySQL数据库(WIN10系统+Vis...
我的电脑只要一开机,就自动加载CMD.exe进程,用户为SYSTEM,cpu资源全被其占用,手动结束进程后,一切正常。本文就教给您一个彻底解决该故障的方法。 1. 杀毒前关闭系统还原(Win2000系统可以忽略):右键“我的电脑”,属性,系统还原,在所有驱动器上关闭系统还原打勾即可。 清除IE的临时文件:打开IE 点工具-->Internet选项:Internet临时文件,点“删除文件
给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有Ra行、Ca列,B有Rb行、Cb列,则只有Ca与Rb相等时,两个矩阵才能相乘。输入格式:输入先后给出两个矩阵A和B。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给出C个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数,并且所有整数的绝对值不超过100。输出格式:若输入的两个矩阵的规模是匹配的,则按照输入的格.
Evita评级 基于Evita的风险评级是与攻击树是紧密相关的。大致步骤为:根据Safety、Private、Fiancial、Operational,分别记为Ss、Sp、Sf、So完成Severity的评级; 对不同攻击资产完成这五个项目的评分; 根据五个项目的评分和计算一个attack potential; 将攻击树表格化,含有攻击目标、攻击方法、攻击资产; 根据攻...