前言:
沒有比人更高的山,沒有比腳更長的路
--------------------------------正文---------------------------------
注冊組件
全局
Vue.component('my-com',{
template: '',
data(){return{xxx:xxx}}
});
局部
new Vue({
el:'',
data:{},
components: {
xxx: {
template:'',
data(){return {xxx:xxx}}
}
}
})
組件之間數(shù)據(jù)傳遞
一、父組件給子組件數(shù)據(jù)(props)
eg:
<div id="box">
<my-head v-for="(item,index) in atitle" :key="index" :title="item"></my-head>
</div>
<script src="js/vue.js"></script>
<script type="x-template" id="my-head">
<div>
<h2>{{title}}</h2>
<p v-for="(item,index) in num" :key="index">{{item}}</p>
</div>
</script>
<script type="text/javascript">
new Vue({
el:'#box',
data:{
atitle:['標(biāo)題一','標(biāo)題二','標(biāo)題三']
},
components: {
'myHead':{
props: {
title:String
},
template:'#my-head',
data(){
return{
num:[1,2,3]
}
}
}
}
});
</script>
二、子組件給父組件數(shù)據(jù)
使用 $on(eventName) 監(jiān)聽事件
使用 $emit(eventName) 觸發(fā)事件
eg:
<div id="box">
{{count}}
<my-head v-on:emitnum="onnum"></my-head>
</div>
<script type="x-template" id="my-head">
<div>
<input type="number" v-model="num" @change="changeNum">
</div>
</script>
<script src="js/vue.js"></script>
<script type="text/javascript">
new Vue({
el:'#box',
data:{
count:0
},
methods:{
onnum(num){
this.count=num;
}
},
components:{
'myHead':{
template:'#my-head',
data(){
return{
num:0
}
},
methods:{
changeNum(){
this.$emit('emitnum',this.num)
}
}
}
}
});
</script>
三、同級(jí)組件傳遞數(shù)據(jù)
eg:
<div id="box1">
{{count}}
<button>按鈕</button>
</div>
<div id="box2">
{{count}}
<button @click="change">按鈕</button>
</div>
<script src="js/vue.js"></script>
<script type="text/javascript">
var oV=new Vue();
new Vue({
el:'#box1',
data:{
count:1
},
created(){
var _this=this;
oV.$on('count',function(num){
_this.count=num;
})
}
});
new Vue({
el:'#box2',
data:{
count:5
},
methods:{
change(){
oV.$emit('count',this.count);
}
}
});
</script>