表格表头如图所示,有 40-45,45-50 数据,且以输入框形式呈现,现想修改其数据或点击右侧加号增加新数据编辑。结果不能输入,部分代码如下
<template v-if="columnData.length > 0"><el-table-column v-for="(item,index) in columnData" :prop="item.prop" :width="item.width"><template slot="header"><el-input size="mini" :disabled="pageType == 'view'" v-model="item.label"></el-input><i class="el-icon-remove-outline" @click="deleteSizeColumns(item.prop)" style="font-size: 16px;"></i></template><template slot-scope="scope"><span v-if="scope.row[item.prop] !== null"><el-input size="mini" :disabled="pageType == 'view'" v-model="scope.row[item.prop]"></el-input></span></template></el-table-column><el-table-column></template>
我看在这一块template
中不需要用到 scope
去获取数据,于是没有加上 slot-scope="scope"
<template slot="header"><el-input size="mini" :disabled="pageType == 'view'" v-model="item.label"></el-input><i class="el-icon-remove-outline" @click="deleteSizeColumns(item.prop)" style="font-size: 16px;"></i></template>
结果不能输入,解决方法就是在表头自定义时将漏掉的slot-scope="scope"
加回去
<template slot="header" slot-scope="scope"><el-input size="mini" :disabled="pageType == 'view'" v-model="item.label"></el-input><i class="el-icon-remove-outline" @click="deleteSizeColumns(item.prop)" style="font-size: 16px;"></i></template>
附:
Scoped slot 可以获取到 row, column, $index 和 store(table 内部的状态管理)的数据