组件传值:
父传子:
利用自定义属性通过 props 进行传值 
1 父组件在子标签绑定自定义属性 title
2 子组件通过组件属性 props 进行接收
 
子传父:
在子组件中创建一个按钮并绑定一个点击事件,在点击事件中使用$emit来触发自定义事件,并传递参数
在父组件的子标签中监听这个自定义事件,并添加一个响应该事件的的处理方法
 
运用自定义事件 通过 this.$emit()
点击事件中,如果打了括号,$event 对象需要自己传,不打括号 $event 对象内部会自己传递
 
<oneSon2 @getCity="getCityAction"></oneSon2>
oneSon2:引用的组件
getCity:绑定自定义的事件,在子组件的事件中 通过 this.$emit('getCity', this.city) 触发
参数1:事件名
参数2:需要传递的值
getCityAction:写在父组件中等待触发的事件
需要写一个参数接收自组件传递的值
 
1 父组件在子标签绑定自定义事件 @getCity ,和一个自己执行的事件 getCityAction
2 子组件在事件中 通过 $emit 触发父组件的自定义事件 getcity 并传值 this.city this.scenicList 给父组件
 
兄弟组件传值 (拥有同一个父组件) B 传值给 A
B 组件先通过子传父的方式将属性传给父组件
父组件通过 ref 属性调用子组件的事件并以参数形式传递给组件 A
 
1 组件 A oneSon 和 组件 B oneSon2 拥有共同的父组件,B 传值给 A
2 父组件在子组件 B 绑定自定义事件 @getCity 和一个自己执行的事件 getCityAction
3 父组件在子组件 A 绑定一个 ref 属性 cityDataRef
4 子组件 B 通过 $emit 触发父组件的自定义事件 getCity,并传值
5 父组件以参数形式拿到子组件 B 传递来的值 city scenicList,通过 $refs 触发绑定的 ref 属性 cityDataRef 并调用 子组件 A 的事件 以参数形式将值 sonInfo 传递给 子组件A (父组件可以直接调用子组件的 data() 数据,但是为了符合 Vue 的单向数据流规范,不建议父组件修改子组件的数据,所以以参数形式传递给子组件,让子组件自己修改自己的数据)
6 从父组件拿到参数 info 添加进 自己的 data() 数据中
 
非父子组件传值(没有共同父组件)
 
1 定义空的公共 js 文件 tmp.js 创建一个 Vue 空实例
2 oneSon 引入 tmp.js 文件 并 使用 $on 进行监听
3 oneSon2  引入 tmp.js 文件 并 使用 $emit 进行触发并传值
 
posted on 2019-04-01 22:52  渐行渐远ls  阅读(121)  评论(0编辑  收藏  举报