注冊全局組件
<!--注冊全局組件-->
<div id="app">
<!--
組件使用駝峰命名法使用時候需要使用-小寫調用
-->
<my-com1></my-com1>
</div>
<script>
/*
使用Vue.component創建組件,參數1為組件名稱
*/
Vue.component('myCom1', {
//通過template屬性指定組件要展示的html結構
template: '<h3>Vue.extend創建組件</h3>'
})
let vm = new Vue({
el: '#app',
data: {}
})
</script>
<!--注冊全局組件-->
<div id="app">
<mycom1></mycom1>
</div>
<!--在被控制的#app外使用template 元素-->
<template id="temp1">
<div>
<h1>通過template組件</h1>
</div>
</template>
<script>
Vue.component('mycom1',{
template:'#temp1'
})
let vm=new Vue({
el:'#app',
data:{
}
})
</script>
注冊私有組件
<div id="app2">
<login></login>
</div>
<template id="temp2">
<h2>私有組件</h2>
</template>
new Vue({
el:'#app2',
data:{},
methods:{},
filters:{},
directives:{},
components:{ //定義私有組件
login:{
template:'#temp2'
}
},
beforeCreate(){},
created(){},
beforeMount(){},
mounted(){},
beforeUpdate(){},
updated(){},
beforeDestroy(){},
destroyed(){}
})
父組件傳遞值到子組件
<div id="app">
<!--父組件可以在引用子組件時候可以通過屬性綁定的形式,
把需要傳遞給子組件的數組以屬性綁定的形式傳遞-->
<com1 :parentmsg="msg"></com1>
</div>
<script>
let vm = new Vue({
el: '#app',
data: {
msg: '123 父組件'
},
methods: {},
components: {
//子組件中默認無法訪問父組件中的data上的數據和methods中的函數
com1: {
/*
組件中的所有props數據都是通過父組件傳遞的
把父組件傳遞的屬性定義好才能使用父組件傳遞參數
props中的數據都是只讀的
*/
props: [
'parentmsg'
],
template: '<h1>子組件--{{parentmsg}}</h1>'
}
}
})
</script>
父組件傳遞函數到子組件
<div id="app">
<!--父組件向子組件傳遞方法使用事件綁定機制-->
<com2 @func="show"></com2>
</div>
<template id="temp1">
<div>
<h1>這是自組件</h1>
<input type="button" value="點擊" @click="myClick" />
</div>
</template>
<script>
let vm = new Vue({
el: '#app',
data: {},
methods: {
show(data) {
console.log(data)
}
},
components: {
com2: {
template: '#temp1',
data() {
return {
son: { name: '張三', age: 123 }
};
},
methods: {
myClick() {
console.log("ok")
//使用emit調用父組件傳遞函數,第一個參數是函數名稱,后邊參數為傳遞的參數
this.$emit('func', this.son)
}
}
}
}
})
