vue2 插槽 父组件如何只对个别字段处理 其它使用子组件的默认值?

子组件

<template slot-scope="scope">

// 父组件使用这个插槽时 有个if判断 只针对个别字段(列)处理; 其它字段(列)使用下方的默认值

<slot name="bodyCell" :column="column" :record="scope.row">

</slot>

<slot>{{ scope.row[column.prop] }}</div>

</template>

父组件

<Child>

<template slot="bodyCell" slot-scope="{column, record}">

<template v-if="column.prop == '表格的第一列'">

// 只对个别字段处理,不符合条件的 使用子组件的<slot>默认值

// ...

</template>

</template>

</Child>


回答:

两种解决方案:
1.去掉默认插槽,控制权全部交给bodyCell
子组件

// 只保留bodyCell插槽

<template slot-scope="scope">

<slot name="bodyCell" :column="column" :record="scope.row" />

</template>

父组件

<Child>

<template slot="bodyCell" slot-scope="{column, record}">

<template v-if="column.prop == '表格的第一列'">

// 符合条件

</template>

<template v-else>

// 默认的

</template>

</template>

</Child>

2.或者在子组件处理好默认值
子组件

<template>

<div class="child">

<slot name="bodyCell" :column="column" :record="row">

<span>默认插槽</span>

</slot>

</div>

</template>

<script>

export default {

name: "Child",

props: {},

data() {

return {

column: {

prop: "表格的第一列"

},

row: {

name: "child",

prop: "child-component"

}

};

}

};

</script>

父组件

<template>

<div id="app">

<Child>

<template #bodyCell="{ column }">

<template v-if="column.prop === '表格的第一列'">

<span>传入的插槽</span>

</template>

</template>

</Child>

</div>

</template>

<script>

import Child from "./components/Child.vue";

export default {

name: "App",

components: {

Child,

},

};

</script>

vue2 插槽 父组件如何只对个别字段处理 其它使用子组件的默认值?

修改一下 column 的值
子组件

<template>

<div class="child">

<slot name="bodyCell" :column="column" :record="row">

<span>默认插槽</span>

</slot>

</div>

</template>

<script>

export default {

name: "Child",

props: {},

data() {

return {

column: {

prop: "表格的第二列"

},

row: {

name: "child",

prop: "child-component"

}

};

}

};

</script>

vue2 插槽 父组件如何只对个别字段处理 其它使用子组件的默认值?

以上是 vue2 插槽 父组件如何只对个别字段处理 其它使用子组件的默认值? 的全部内容, 来源链接: utcz.com/p/933818.html

回到顶部