vue中让默认插槽slot里只能显示指定的组件呢? 比如el-select的默认插槽只能放el-option,

vue的默认插槽里可以放任何代码, 但是怎么限制具体的内容呢?

过滤this.$slots.default我觉得是不可行的, 没看懂Element的源码, 至少它不是这样做的

<el-select v-model="value" placeholder="请选择">

<el-option

v-for="item in options"

:key="item.value"

:label="item.label"

:value="item.value">

</el-option>

</el-select>

回答

既然说到了elementui 那我们来找一下源码 :https://github.com/ElemeFE/el...

// 111-124 行 并没有什么特殊处理

<el-scrollbar

tag="ul"

wrap-class="el-select-dropdown__wrap"

view-class="el-select-dropdown__list"

ref="scrollbar"

:class="{ 'is-empty': !allowCreate && query && filteredOptionsCount === 0 }"

v-show="options.length > 0 && !loading">

<el-option

:value="query"

created

v-if="showNewOption">

</el-option>

<slot></slot>

</el-scrollbar>

image.png
通过源码和代码测试,并没有相关的功能实现

// if(!window.el){

el = document.createElement('div')

el.id = 'app1'

document.body.appendChild(el)

// }

el.innerHTML = `

<div>

<el-select v-model="value" placeholder="请选择">

<el-option

:key="1"

:label="1"

:value="1">

</el-option>

<el-option

:key="2"

:label="2"

:value="2">

</el-option>

<v-option

:key="3"

:label="3"

:value="3">

</v-option>

<div

:key="4"

:label="4"

:value="4"> 4

</div >

</el-select>

</div>

`

vm = new Vue({

el: '#app1',

data(){

return {value: ''}

}

})

稀奇古怪的需求

以上是 vue中让默认插槽slot里只能显示指定的组件呢? 比如el-select的默认插槽只能放el-option, 的全部内容, 来源链接: utcz.com/a/31460.html

回到顶部