浅议vue的table里添加时间选择器和input框

       我们用vue开发的时候经常会用到时间选择器和input输入框,相信单独使用的时候我们都能使用得如鱼得水,但要是vue的table里加可能很多同学一开始都很懵逼,反正我是懵逼过,还好最终还是实现了~

        不多说了,直接上代码:

                <el-table :data="tableData" v-model="ruleForm.maindata" max-height="360">
                  <el-table-column type="index" width="50" label="序号"></el-table-column>
                  <el-table-column prop="JE" label="金额输入">
                    <template slot-scope="scope">
                      <el-form-item class="mItem">

                       <el-input ref="input" size='mini v-model="scope.row.JE" @change="changeData(scope.$index, scope.row,)"></el-input>

                      </el-form-item>
                    </template>
                  </el-table-column>
                  <el-table-column prop="NY" label="选择年月">
                    <template slot-scope="scope">
                      <el-form-item class="mItem">
                        <el-date-picker :clearable="false"
                          v-model="scope.row.NY"
                          type="month"
                          value-format="yyyy-MM"
                          format="yyyy-MM"
                          placeholder="">
                        </el-date-picker>
                      </el-form-item>
                    </template>
                  </el-table-column>

                </el-table>

相信代码一出来,同学们都能看得懂。我还是来解释下吧

1、slot-scope="scope",scope是slot标签上返回了所有的属性值,并且这些属性值是是存放在一个对象里的。其中slot包含了两个属性:index 和 row, 我们可以通过scope.$index取得当前的index值,scope.row取得该行的所有属性值(从而获取到想要指定的属性值)

2、v-model:绑定了input里的值。在列表中我们需要绑定每一行对应的值,理解了第一点后,我们很好绑定值:v-model="scope.row.SXNY",在input框中,我们还可以通过@change事件来绑定指定的值,也可以不用@change,v-model会自动绑定input里的值。

3、在时间选择中,我通常要对时间进行格式化为:yyyy-MM-dd的格式,element-ui中的日期选择器有很好用的两个属性:value-format 和 format, 其中value-format是对绑定值进行格式化,可以写成value-format:  'yyyy-MM-dd',若不指定规制的话,该值为默认的data类型。format则是对input框显示格式化,用法和format: 'yyyy-MM-dd'。所有我们完全就可以只用format和value-format完成时间格式转化,而不需要多写@change事件来对值进行格式转化。

希望我的浅议能对你们有所帮助,我也是个菜鸟,有不足的地方望各位大神们指点~


在iview的Table组件中添加日期选择器Input输入可以通过iview的template模板语法来实现,可以参考以下代码: ```html <template> <Table :columns="columns" :data="data"> <template slot-scope="{row, column}"> <div v-if="column.key === 'date'"> <DatePicker :value="row[column.key]" type="date" @on-change="onDateChange(row, column.key, $event)" /> </div> <div v-else-if="column.key === 'input'"> <Input v-model="row[column.key]" @on-change="onInputChange(row, column.key, $event.target.value)" /> </div> <div v-else> {{ row[column.key] }} </div> </template> </Table> </template> <script> import { Table, DatePicker, Input } from 'view-design' export default { components: { Table, DatePicker, Input }, data() { return { columns: [ { title: '日期', key: 'date' }, { title: '内容', key: 'input' }, { title: '备注', key: 'remark' } ], data: [ { date: '2021-08-01', input: '示例1', remark: '备注1' }, { date: '2021-08-02', input: '示例2', remark: '备注2' } ] } }, methods: { onDateChange(row, key, value) { row[key] = value }, onInputChange(row, key, value) { row[key] = value } } } </script> ``` 这使用iview的DatePicker组件来选择日期,使用Input组件来输入内容,通过在Table组件的template插槽中添加DatePicker和Input组件,可以将选择器和输入添加到表格的每一行中。 注意,在onDateChange和onInputChange方法中,需要将选择器选中的日期值或输入输入的值赋值给对应的行数据属性,这样才能实现选择器和输入的同步更新。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值