其他分享
首页 > 其他分享> > 作用域插槽slot-scoped

作用域插槽slot-scoped

作者:互联网

先看文件关系图
在这里插入图片描述

models文件

<template>
<div>
  <div class="container" >
    <div class="title">{{title}}</div>
    <slot name="model1"></slot>
    // 这地方name就是具名插槽,在调用时写slot="对应插槽的名字"即可
    <slot name="btn"></slot>
    <slot name="vFor" :data="mockData"></slot>
    // :data2="mockData" 表示传递数据给父组件使用,通常用的不多
    // 通常用$emit()比较多
  </div>
</div>
</template>

<script>
export default {
  name: 'models',
  props: ['title'],
  data(){
    return{
      mockData: ['zhangsan','lisi','wanwu'],
    }
  },
  mounted(){
    this.$emit('sendData',this.mockData)
  }
}
</script>

<style lang="less" scoped>
.container {
  width: 500px;
  height: 200px;
  box-shadow: 0 1px 2px #333333;
  .title{
    font-size: 20px;
    text-align: left;
    margin-left: 20px;
    color: #333333;
    line-height: 60px;
    border-bottom: 1px solid #e3dcdc;
  }
}
</style>

view/Home文件

<template>
  <div class="home color-primary">
    <Models title="这是标题内容" @sendData="sendData">
      <input slot="model1" type="text" placeholder="请输入内容" >
      // 调用具名插槽需要对应的slot名字,用啥插槽就写啥名字

      // 注意这地方使用时候要写在template中
      <template slot="vFor" slot-scope="mockData">
        <p>
          "mockData------" <br>
          {{mockData}}
        </p>
        <br>
        <div v-for="item in mockData.data">{{item}}</div>
        // mockData是一个对象,data2里面才是传过来的数据
      </template>
    </Models>
  </div>
</template>

<script>
import Models from 'src/components/models'
export default {
  name: 'Home',
  data(){
    return {
    }
  },
  mounted(){
  },
  methods: {
    sendData(receiveData){
      console.log('$emitData',receiveData)
    }
  },
  components: {
    Models
  }
}
</script>

<style lang="less" scoped>
.home {
  .box {
    display: inline-block;
    width: 40px;
    height: 50px;
    border: 1px dotted #445566;
  }
}
</style>

效果图如下:

在这里插入图片描述
在这里插入图片描述

总结下

标签:slot,title,作用域,插槽,具名,mockData,scoped,组件
来源: https://blog.csdn.net/qq_40029822/article/details/122090237