表格表头如图所示,有 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 内部的状态管理)的数据