4.Vue 局部组件
2018-04-16 本文已影响39人
圆梦人生
公共组件全部放在src\components\下
在src\components\下建立:Top.vue
代码:
<template>
<div>
<div @click="topClick">Top{{name1}} {{name2}}</div>
<div>
</template>
<script>
export default {
data(){
return {
isTop : false
},
},
// 声明接受父组件传入的值
props:['name1', 'name2'],
methods: {
topClick(){
//抛出事件 给父组件
this.$emit('topClick', this.isTop = !this.isTop);
}
}
}
</script>
<style scoped>
div {
background-color: #42b983;
width: 100px;
height: 100px;
position: absolute;
right: 30px;
}
</style>
新建index.vue,导入公共组件
<template>
<div>
<!--topVue></topVue-->
<!--
1.建议使用驼峰式写法
2.给组件传入参数:属性="参数值" ; :属性="变量" 等价于v-bind:属性="变量"
3.ref给组件取别名通过别名获取子组件属性和方法
-->
<top-vue @topClick="topClick' name1="参数1" :name2="title" ref="childTop"></top-vue>
<br/><br/>
<button @click="childTop">获取子组件信息</button>
</div>
</template>
<script>
//导入组件
import topVue from '@/components/Top';
export default {
data(){
return {
title: '参数2'
}
},
methods:{
//监听子组件抛出事件
topClick(isTop){
console.log(isTop);
},
//获取子组件信息
childTop(){
console.log(this.$refs.childTop.isTop);
}
},
//声明组件
components:{
//topVue: topVue,
//如果导入组件取的别名和声明组件的key一样,可简写,否则就要key:value形式
topVue
}
}
</script>