父子组件之间的通信1. 组件之间的通信
向子组件中传递 number=99
<template>
<div id="myapp">
<com-a number=99></com-a>
</div>
</template>
<script>
import ComA from './components/a.vue'
export default {
components: {
ComA
}
}
</script>
子组件a.vue
中
<template>
<div class="hello">
{{hello}}
{{ number }}
</div>
</template>
<script>
export default {
// 声明number属性
// 未指定类型
// props: ['number'],
// 指定类型
props: {
'number': [Number, String]
},
data () {
return {
hello: 'I am componnet a'
}
}
}
</script>
执行效果
父组件向子组件传递number=992. 组件之间的通信 - 动态属性传递
表单里面的内容动态的显示在子组件中
<template>
<div id="myapp">
<input type="text" v-model="myVal">
<com-a :my-value="myVal"></com-a>
</div>
</template>
<script>
import ComA from './components/a.vue'
export default {
components: {
ComA
},
data () {
return {
myVal: ''
}
}
}
</script>
子组件a.vue
<template>
<div class="hello">
{{hello}}
{{ myValue }}
</div>
</template>
<script>
export default {
// 声明number属性
// 未指定类型
// props: ['number'],
// 指定类型
props: {
'my-value': [Number, String]
},
data () {
return {
hello: 'I am componnet a'
}
}
}
</script>
组件之间的通信 - 动态属性传递
- 插槽
slot
向子组件传递一个模板
<com-a :my-value="myVal">
<p>我是一个插槽</p>
<span>123456</span>
</com-a>
com-a
组件中
<template>
<div class="hello">
{{hello}}
{{ myValue }}
//给插槽设置默认值
<slot>no slot</slot>
</div>
</template>
插槽里面有内容
如果传递的插槽里面没有内容,为空
<com-a :my-value="myVal"></com-a>
给插槽设置默认值
<slot>no slot</slot>
则显示
QQ20170906-211129@2x.png
- 具名Slot
<template>
<div id="myapp">
<!--具名插槽-->
<com-a :my-value="myVal">
<p slot="header">xxxx header</p>
<p slot="footer">yyyy footer</p>
</com-a>
</div>
</template>
com-a
组件中
<template>
<div class="hello">
{{hello}}
{{ myValue }}
<!--<slot>no slot</slot>-->
<br>
<slot name="header">no header</slot>
<p>乱七八糟的内容</p>
<slot name="footer">no footer</slot>
</div>
</template>
执行结果:
具名插槽
3. 组件之间的通信 - 动态组件
# is
<table>
<tr is="my-row"></tr>
</table>
具体参考文档,没怎么讲!
https://cn.vuejs.org/v2/api/#is
网友评论