1.home.vue
<template>
<div class="father">
<h3>这里是父组件</h3>
<!--第一次使用:用flex展示数据-->
<child>
<template slot-scope="user">
<div class="tmpl">
<span v-for="item in user.data">{{item}}</span>
</div>
</template>
</child>
<!--第二次使用:用列表展示数据-->
<child>
<template slot-scope="user">
<ul>
<li v-for="item in user.data">{{item}}</li>
</ul>
</template>
</child>
<!--第三次使用:直接显示数据-->
<child>
<template slot-scope="user">
{{user.data}}
</template>
</child>
<!--第四次使用:不使用其提供的数据, 作用域插槽退变成匿名插槽-->
<child>
我就是模板
</child>
</div>
</template>
<script>
// @ is an alias to /src
import child from "@/components/HelloWorld.vue";
export default {
name: "home",
components: {
child
}
};
</script>
2.helloworld.vue
<template>
<div class="child">
<h3>这里是子组件</h3>// 作用域插槽
<slot :data="data"></slot>
</div>
</template>
<script>
export default {
data: function() {
return {
data: ["zhangsan", "lisi", "wanwu", "zhaoliu", "tianqi", "xiaoba"]
};
}
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="scss">
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>