作用域插槽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>

效果图如下:

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

总结下

  • 具名插槽相当于一个带有名字的壳子,谁想要用,把自己标上对应的名字就能进入壳子,在页面展示
  • 作用域插槽可以配合具名插槽或者匿名插槽一起使用,主要作用就是传递数据,插槽本身的数据传递给父组件,供父组件在其他组件中使用
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值