element-ui自定义表格如何给input双向绑定数据

Petunia ·
更新时间:2024-09-20
· 1832 次阅读

目录

问题描述

先看一下,错误的代码

实现的效果

看一下官方的示例

问题描述

有个项目需求点击添加按钮添加一行,我采用的是自定义表格,刚开始写好之后,点击添加,可以实现,但是却发现输入框不能输入数据,控制台报错

先看一下,错误的代码

这里列出了主要代码

<el-table :data="tableData" style="width: 98%; margin-left:20px"> <el-table-column label="属性类型" align="center"> <el-select v-model="attrType" placeholder="请选择属性类型"> <el-option label="区域一" value="shanghai" /> <el-option label="区域二" value="beijing" /> </el-select> </el-table-column> <el-table-column label="属性名称" align="center"> <el-input v-model="attrName" placeholder="请输入属性名称" clearable /> </el-table-column> <el-table-column label="属性标识" align="center"> <el-input v-model="attrFlag" placeholder="请输入属性标识" clearable /> </el-table-column> <el-table-column label="属性映射" align="center"> <el-input v-model="attrMap" placeholder="请输入属性映射" clearable /> </el-table-column> <el-table-column label="属性单位" align="center"> <el-input v-model="attrUnit" placeholder="请输入属性单位" clearable /> </el-table-column> <el-table-column label="属性符号" align="center"> <el-input v-model="attrSymbol" placeholder="请输入属性符号" clearable /> </el-table-column> <el-table-column label="操作" align="center"> <el-button size="mini" type="danger" @click="handleDelete(item, index)">删除</el-button> </el-table-column> </el-table> data () { return { tableData: [ { attrType: '', attrName: '', attrFlag: '', attrMap: '', attrUnit: '', attrSymbol: '' } ] } }, 实现的效果

看着好像没什么问题,但是inout输入框不能输入东西,控制台报警告,后来仔细看了一下官方提供的自定义数据表格,发现缺少一些代码,

看一下官方的示例 <template> <el-table :data="tableData" style="width: 100%"> <el-table-column label="日期" width="180"> <template slot-scope="scope"> <i class="el-icon-time"></i> <span style="margin-left: 10px">{{ scope.row.date }}</span> </template> </el-table-column> <el-table-column label="姓名" width="180"> <template slot-scope="scope"> <el-popover trigger="hover" placement="top"> <p>姓名: {{ scope.row.name }}</p> <p>住址: {{ scope.row.address }}</p> <div slot="reference" class="name-wrapper"> <el-tag size="medium">{{ scope.row.name }}</el-tag> </div> </el-popover> </template> </el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button> <el-button size="mini" type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [{ date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀区金沙江路 1517 弄' }, { date: '2016-05-01', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄' }, { date: '2016-05-03', name: '王小虎', address: '上海市普陀区金沙江路 1516 弄' }] } }, methods: { handleEdit(index, row) { console.log(index, row); }, handleDelete(index, row) { console.log(index, row); } } } </script>

看上图,有没有发现问题所在,我出现错误的地方有两个

第一个: 没有写<template slot-scope="scope">

第二个:给input绑定的数据是attrName儿不是scope.row.attrName

那么scope.row和scope.column是什么东东?我们打印一下看看

所以知道我为什么把原来的attrName替换成了scope.row.attrName的原因了吧。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持软件开发网。



表格 数据 element input

需要 登录 后方可回复, 如果你还没有账号请 注册新账号