父组件向子组件传值
1.1.在父组件
App.vue
中引入子组件
<script>
import v-header from "@/component/header.vue"
export default {
components:{
v-header
}
}
</script>
1.2.父组件
App.vue
调用子组件header.vue
的时候 绑定动态属性
<template>
<div id="app">
<v-header :title="title"></v-header>
</div>
</template>
1.3.在子组件
header.vue
中<script/>
标签里边使用props接受父组件传过来的参数的
<script>
export default {
props:['title']
}
</script>
props更多校验方法
<script>
props: {
// 基础的类型检查 (`null` 匹配任何类型)
propA: Number,
// 多个可能的类型
propB: [String, Number],
// 必填的字符串
propC: {
type: String,
required: true
},
// 带有默认值的数字
propD: {
type: Number,
default: 100
},
// 带有默认值的对象
propE: {
type: Object,
// 对象或数组默认值必须从一个工厂函数获取
default: function () {
return { message: 'hello' }
}
},
// 自定义验证函数
propF: {
validator: function (value) {
// 这个值必须匹配下列字符串中的一个
return ['success', 'warning', 'danger'].indexOf(value) !== -1
}
}
</script>
1.4.在子组件
header.vue
中直接使用
<template>
<div>
<h2>我是一个头部组件--{{title}}</h2>
</div>
</template>
子组件使用父组件中的方法
父组件代码
<template>
<div id="App">
<v-header :run='run'></v-header>
</div>
</template>
<script>
import v-header from "@/component/header.vue"
export default {
data(){
return{
msg:"我是一个父组件",
title:'标题',
list:[],
}
},
methods:{
run(data){
alert('我是父组件的run方法'+data);
}
},
components:{
v-header
}
}
</script>
子组件代码
<template>
<div>
<button @click="run('123')">执行run方法</button>
</div>
</template>
<script>
export default {
props:['run']
}
</script>
方法名 | 实例 |
---|---|
父组件主动获取子组件的数据和方法: | 1.调用子组件的时候定义一个ref。如:<v-header ref="header"></v-header> 。2.在父组件里面通过this.$refs.header.属性、this.$refs.header.方法 获取 |
子组件主动获取父组件的数据和方法 | 在子组件里面通过this.$parent.数据、this.$parent.方法 获取 |
非父子组件之间相互传值 | 定义事件this.$emit('名称','数据') 。其他组件调用事件this.$on('名称',function(){}) |