带插槽且传不同字段的组件封装

组件:

<div class="iconList" v-if="[5, 6].indexOf(lineCount) !== -1">
    <div class="iconList layout-content">
            <div class="item" 
            :class="'item-size'+lineCount" 
            v-for="(item,index) in list" 
            :key="'icon'+index"
            @click="openDetails(item)"
            >
                <slot class="icon" name="icon" :info="item" ></slot>
                <div class="text">{{ item[typeName] }}</div>
            </div>
        </div>
  </div>
</template>

<script>
export default {
     props: {
        list: {
            type:Array,
            default () {
                return [
                ]
            }
        },
        lineCount: {
            type: Number,
            default:6
        },
        typeName: {
            type: String,
            default:'name'
        }
    },
    methods: {
        openDetails (item) {
            this.$emit('openDetail',item)
        }
    }
}
</script>

使用:

 <div class="iconList1">
        <iconList :list="iconLists" :lineCount=6 typeName="name" @openDetail="openDetail">
            <template v-slot:icon='{info}'>
                <i :class=info.icon></i>
            </template>
        </iconList>
    </div>
/

<div class="iconList2">
        <iconList :list="infoLists" :lineCount=5 typeName="bofang" @openDetail="openDetail">
            <template v-slot:icon='{info}'>
                <div>{{ info.name }}</div>
            </template>
        </iconList>
    </div>
///
 methods: {
        contentClick (item) {
            window.open(item.src);
            console.log(item,'contentClick');
        },
        clickMore (item) {
            console.log('clickMore', item);
            window.open(item);
        },
        openDetail (item) {
            console.log(item,'openDetail');
        }        
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值