在学习vue时,组件学习比较吃力,尤其是组件间的通信,所以总结一下,官方文档的组件部分。
注册组件
全局组件
语法如下,组件模板需要使用一个根标签包裹起来。data必须是一个方法
rush:js;">
Vue.component('component-name',{
template:'',data(){
return{
message:'组件的属性'
}
},methods:{
标题
作者信息}
})
局部组件
rush:js;">
var com = {
template:'',methods:{
标题
作者信息}
}
new Vue({
components:{
'compontent-name':com
}
})
组件通信
prop将父组件数据传给子组件
rush:xhtml;">
rush:js;">
利用子组件的props选项,父组件可以向子组件传递数据,但是子组件不能求改父组件的数据。
非父子组件通信
需要使用一个空的Vue实例来管理
rush:xhtml;">
rush:js;">
var bus = new Vue();
return {
adata: 'a的数据'
}
},methods:{
send(){
// 触发这一事件
bus.$emit('data-to-b',this.adata);
}
}
return {
bdata: 'b的数据'
}
},mounted(){
// 监听事件,获取a组件的数据,进行相关操作
bus.$on('data-to-b',function (msg) {
this.bdata = msg;
}.bind(this));
}
};
var coma = {
template: '<p @click="send">{{adata}}
return {
adata: 'a的数据'
}
},methods:{
send(){
// 触发这一事件
bus.$emit('data-to-b',this.adata);
}
}
};
var comb= {
template: '
{{bdata}}
',data(){return {
bdata: 'b的数据'
}
},mounted(){
// 监听事件,获取a组件的数据,进行相关操作
bus.$on('data-to-b',function (msg) {
this.bdata = msg;
}.bind(this));
}
};
new Vue({
el:'#app',components: {
'com-a': coma,'com-b': comb
}
})
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。
原文地址:https://www.jb51.cc/vue/36543.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。