前端学习日记12.2

 1.在使用element-ui的检验表单时加入日期时间选择器,如果初始化的与其绑定的时间数据为空字符串,则有可能遇到[Vue warn]:Error in v-on handler: "TypeError: a.getTime is not a function"

<template>
    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px">
        <el-form-item label="活动时间" prop="date">
          <div class="block">
            <span class="demonstration">默认</span>
            <el-date-picker
              v-model="value1"
              type="datetime"
              placeholder="选择日期时间">
            </el-date-picker>
          </div>
        </el-form-item>
    </el-form>
</template>

<script>
export default: {
    data() {
        return {
            value1: '',
            ruleForm: {
                // 其余表单校验属性略
                date1,  
            },
            rules: {
                // 其余表单属性校验规则略
              date1: [
                { type: 'date', required: true, message: '选择日期', trigger: 'change' }
              ],
            }
        }
    },
}
</script>

原因是由于我们所规定的value1类型为String,故在选择完日期后会变为字符串格式,与其校验的 'date'类型有冲突,删除对应rules的type: 'date'即可解决。

2.常用深拷贝,简单一行写法:

this.tableData = JSON.parse(JSON.stringify(res))

3.一般后端接口默认的格式要求都为JSON格式,使用包装好的getJSON或者postJSON请求,如果接口文档在请求后写明了要form-data格式,应该将postJSON改为post请求。两者区别:

JSON格式:'{ 'key1': 'value1', 'key2': 'value2' }'

Form-data格式:'key1=value1&key2=value2'

具体的区别参考:formdata和json

4.遇到的新问题[Vue warn]:Error in render: “TypeError: Cannot read property ‘fakeVoteCount’ of undefined”,情况简单描述:

<template>
    <el-table :data="tableData" border>
        // 其余el-table-column略
        <el-table-column label="调整" v-if="hasAuth" align="center">
             <template slot-scope="scope">
                  <el-input
                       v-model="adjustmentData[scope.$index].fakeVoteCount"         
                       @change="adjust(scope.row, scope.$index)"
                  ></el-input>
             </template>
        </el-table-column>
    </el-table>
</template>

export default {
    data() {
        return {
            tableData: [],
            adjustmentData: [],
        }
    },
    activated() {
        this.search()
    },
    methods: {
        search() {
            // 做一些请求,将返回数据全部赋值给tableData同时对adjustment进行部分赋值
        },
        hasAuth() { 
        // 判断用户权限
        }
    }
}

虽然报错,但是不影响页面的功能,用debugger断点测试后发现,在data()初始化结束后,在请求返回数据前就进行了报错,所以这是由于data初始化后我的adjustmentData还为空数组并没有我在input输入框所期望绑定的fakeVoteCount造成的报错,但在得到服务器返回的数据并进行赋值后,fakeVoteCount的值能够找到进行了二次渲染,于是观感上并没有什么影响。

解决方法:将对应的标签设置v-if='data[0]'保证在没有得到数据前不展示即可解决,本次data即为adjustment,可以加在el-input框中也可以加在对应的el-table-column中。

<el-table-column label="调整" v-if="hasAuth" align="center">
    <template slot-scope="scope">
        <el-input
            v-if="adjustmentData[0]"
            v-model="adjustmentData[scope.$index].fakeVoteCount"
            @change="adjust(scope.row, scope.$index)"
        ></el-input>
    </template>
</el-table-column>

具体的显示判断可以根据自己的写法来改变,思想还是在真实数据没拿到前不显示对应的标签。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值