vue组件通讯
2018-03-12 11:09
417 查看
vue 组件的通讯
父组件 => 子组件
在父组件中,通过<child1 :child1="count" ></child1>
:child的方式把想传递的
count传递到子组件。子组件通过定义
props来接受传递的参数。然后就可以使用
props:{ child1:{ type:Number, //规定了参数的类型 default:"" //规定参数的默认值 } },
子组件传递给父组件
子组件传递给父组件 需要this.$emit('name1',params)这个样式把你想传递的参数传递出去
this.$emit('select')。然后在父组件中
<child1 :child1="count" @select="addChild"></child1>通过
@select这个名字把想传递的参数传递给父组件 ,父组件定义方法,获取参数
methods:{ addChild(){ this.count += 1; } },
兄弟间通过 bus 传递
需要添加一个bus 来做中间人类似。新建
bus.js文件 里面重新new 一个Vue
import Vue from 'vue' const Bus = new Vue() export default Bus
在每个子组件中都引入他
import Bus from './../api/bus'
然后 通过
Bus.$emit('showOtherData1',this.data) //发送事件
通过:
Bus.$on('showOtherData1', function (val) { console.log(val); })
来监听事件,就可以。
当然如果比较复杂可以使用
vuex
代码
父组件<template> <div> {{count}} <child1 :child1="count" @select="addChild"></child1> <child2 :child2="count" @select="addChild"></child2> </div> </template> <script> import Child1 from './child1' import Child2 from './child2' export default { data () { return { count:1 } }, components:{ Child1, Child2 }, methods:{ addChild(){ this.count += 1; } }, } </script>
子组件1
<template>
<div @click="add">
子组件1-----{{data}}----兄弟组件的值为{{otherdata}}
</div>
</template>
<script>
import Bus from './../api/bus'export default {
props:{
child1:{
type:Number,
default:""
}
},
data(){
return {
'data':'',
'otherdata':''
}
},
created(){
this.data = this.child1
this._showOtherData()
},
methods:{
add(){
this.data += 1;
this.$emit('select')
Bus.$emit('showOtherData1',this.data)
},
_showOtherData(){
var that = this
Bus.$on('showOtherData2', function (val) {
console.log(val);
that.otherdata = val
})
}
}
}
</script>
子组件2
<template>
<div @click="add">
子组件2-----{{data}}----兄弟组件的值为{{otherdata}}
</div>
</template>
<script>
import Bus from './../api/bus'export default {
props:{
child2:{
type:Number,
default:""
}
},
data(){
return {
'data':'',
'otherdata':''
}
},
created(){
this.data = this.child2
this._showOtherData()
},
methods:{
add(){
this.data += 1;
this.$emit('select')
Bus.$emit('showOtherData2',this.data)
},
_showOtherData(){
var that = this;
Bus.$on('showOtherData1', function (val) {
console.log(val);
that.otherdata = val
})
}
}
}
</script>
相关文章推荐
- vue2.0 兄弟组件(平级)通讯的实现代码
- vue 父子组件通讯--props,refs(muse-ui,vue.js2.0)
- Vue 通讯组件
- vue.js组件之间通讯--父组件调用子组件的一些方法,子组件暴露一些方法,让父组件调用
- 深入理解Vue父子组件通讯的属性和事件
- VueJs组件之父子通讯的方式
- vue.js 利用组件之间通讯,写一个弹出框例子
- Vue中父子组件通讯——组件todolist
- Vue.js 父子组件通讯开发实例
- vue组件通讯
- vue.js组件之间通讯的数据双向绑定----父亲把数据传递给儿子,儿子更改数据后,重新发送给父亲,父亲数据更改后,属性会重新发送个儿子,儿子刷新新数据
- Vue2.0 组件传值通讯的示例代码
- vue 兄弟组件之间的通讯
- Vue 组件间的通讯
- 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据
- vue-pos : 子组件与子组件通讯
- vue 通过下拉框组件学习vue中的父子通讯
- vue父子组件通讯--在组件内使用v-for
- vue.js组件之间的通讯-----父亲向儿子传递数据,儿子接收父亲的数据
- 【原】vue单文件组件互相通讯