vue2.0 父子组件数据传递prop
vue的一个核心概念就是组件,而组件实例的作用域是孤立的,所以组件之间是不能直接引用其他组件的数据的。极端点举例来说,就是可以在同一个项目中,每一个组件内都可以定义相同名称的数据。
data () {
return {
msg: "Hello Vue2.0.js"
}
}
比如每个组件我们都定义一个msg,当我们使用msg的时候,使用的都是各自组件内部的msg,而不会互相干扰。
而如果父子组件当中,如果需要实现数据的传递,父组件的数据需要通过 prop 才能下发到子组件中,子组件要显式地用props选项声明它预期的数据。
<photo-item
v-for="(item, index) in rightLists.item"
:key="item.id"
:item="item"
@del="del">
</photo-item>
以<photo-item />子组件为例,在父组件当中调用<photo-item /> 通过prop显示传递item,也就是“:item='item'”,在子组件当中,显示声明props
props: ["item"]
就可以获取到父组件传递过来的item对象,同时prop可以提供指定验证规则。如果传入的数据不符合要求,Vue 会发出警告。
props: {
'item':{
type: Object,
required: true
}
},
使item成为一个对象,type指定传递过来的item数据类型,可以以数组方式指定多种数据类型,required指定是否为必传,default指定默认值,validator是自定义一个验证函数。
如果你想把一个对象的所有属性作为 prop 进行传递,可以使用不带任何参数的 v-bind。
<template>
<child-comp v-bind="item"></child-comp>
</template>
import ChildComp from "./components/ChildComp.vue"
export default{
data () {
return {
item: {
text: "欢迎使用vue",
version:"2.0"
}
}
},
components:{
ChildComp
},
}
此时在子组件当中,使用props显示接收的就是text和version,而与名义上的item已经没有什么关系了。
export default{
props: ["text", "version"]
}
在子组件当中如果需要改变父组件传递过来的数据,并且传递会去,则需要使用到vue 的自定义事件系统。
在子组件当中绑定事件,通过$emit通知父组件。
子组件的实现过程:
<template>
<div @click="changeText">
{{hello}}
<hr>
{{version}}
</div>
</template>
<script>
export default{
data(){
return{
hello: this.text
}
},
props: ["text", "version"],
methods:{
changeText(){
this.hello = "我需要改变传递过来的text,并且通知父组件当中的数据";
this.$emit("changedComppText")
}
}
}
</script>
通过事件changeText,实现子组件的事件变化,在函数changeText内部通过 this.$emit("changedComppText") 向父组件报告自己的内部事件,在父组件当中,通过自定义事件
<child-comp v-bind="item" @changedComppText = "beChanged"></child-comp>
然后在methods中定义方法beChanged,从而实现父组件当中的数据变化,来同步实现子组件的数据变化。其中$emit还有第二个payload参数通知变化结果。
vue2.0 父子组件数据传递prop的更多相关文章
- vue2.0 兄弟组件数据传递方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- React中父子组件数据传递
Vue.js中父子组件数据传递:Props Down , Events Up Angular中父子组件数据传递:Props Down, Events Up React中父子组件数据传递:Prop ...
- Vue2.0父子组件之间和兄弟组件之间的数据交互
熟悉了Vue.js的同级组件之间通信,写此文章,以便记录. Vue是一个轻量级的渐进式框架,对于它的一些特性和优点,请在官网上进行查看,不再赘述. 使用NPM及相关命令行工具初始化的Vue工程,目录结 ...
- 关于vue.js父子组件数据传递
vue.js中使用props down,events up的原则进行父子组件间的通信,先来记录下props down,看个例子: <div id="app2"> < ...
- Vue2.0父子组件间事件派发机制
从vue1.x过来的都知道,在vue2.0中,父子组件间事件通信的$dispatch和$broadcase被移除了.官方考虑是基于组件树结构的事件流方式实在是让人难以理解,并且在组件结构扩展的过程中会 ...
- vue2.0父子组件以及非父子组件通信传参详解
1.父组件传递数据给子组件 父组件数据如何传递给子组件呢?可以通过props属性来实现 父组件: <parent> <child :child-msg="msg" ...
- vue2.0父子组件以及非父子组件如何通信
1.父组件传递数据给子组件 父组件数据如何传递给子组件呢?可以通过props属性来实现 父组件: <parent> <child :child-msg="msg" ...
- vue2.0父子组件之间通信
父组件是通过props属性给子组件通信的来看下代码: 父组件: <parent> <child :child-com="content"></chil ...
- Vue2.0父子组件之间的双向数据绑定问题解决方案
对于vue 1.0项目代码,如果把vue换成vue 2.0,那么之后项目代码就完全奔溃不能运行,vue 2.0在父子组件数据绑定的变化(不再支持双向绑定)颠覆了1.0的约定,很遗憾. 解决方案只有两种 ...
随机推荐
- PyCharm中的Console自动换行
菜单栏-> File -> Settings -> Editor -> General -> Console,选中右侧Use soft wraps in console前 ...
- SQL Server 2005无法远程连接的解决方法 (转帖)
方法如下: 一.为 SQL Server 2005 启用远程连接1. 单击"开始",依次选择"程序"."Microsoft SQL Server 2 ...
- MOSSE(DSST)类和KCF类中滤波器推导结果不一致的解释
首先要说明,DSST//BMVC2014类的CF是从MOSSE//CVPR2010模型得到的,是从信号的角度考虑问题,该类CF直接认为信号和滤波器之间存在相关的关系 而KCF//TPAMI2015类C ...
- Redis list数据结构
1. 更换命名空间 2.lpush 往列表里放入10个值 3. llen列表长度 4. lrange 列表范围 8. lset将第0个元素设置为88 9. lindex 获得第2个元素 10. lpo ...
- Cordova+Angularjs+Ionic 混合开发入门讲解
作为一名学习Android开发的学生,对于移动开发的发展趋势颇为关注,大家都知道,现在原生的移动开发在企业上基本很少使用了,大部分企业为了降低成本,选择了webapp,hybrid(混合开发)这两种模 ...
- [转]阿里云CentOS 7.1使用yum安装MySql5.6.24
阿里云CentOS 7.1使用yum安装MySql5.6.24 作者:vfhky | 时间:2015-06-25 09:43 | 分类:web 在前面两篇文章<2015博客升级记(四):Cent ...
- linux(ubuntu)下安装phantomjs
1.安装phantomjs ubuntu下sudo apt-get install phantomjs下载的不能用 —-下载程序文件 到官网下载 1.安装phantomjs —-下载程序文件 wget ...
- 如何让classmethod只允许使用用类对象来调用
Django REST framework里面有这样一段代码,在网上查@classonlymethod的意思是使得classmethod只允许使用用类对象来调用 @classonlymethod de ...
- .net4.0、.net4.5、.net4.6 三者对系统的要求
net4.0 支持的操作系统 Windows 7, Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Serv ...
- 日志框架学习(log4j2+slf4j)
现在比较吊的就是这个log4j2这个日志框架了,功能强悍.slf4j是个日志框架的统一接口,方便扩展,切换框架啥的. 配置SSM+log4J2+SL4J https://blog.csdn.net/c ...