vue 使用ivew 时, 提交数据的时候, 总是Date类型?

826 阅读1分钟
让你明明白白学知识,有代码,有讲解,抄的走,学的会!

在使用 iview 的时候, 我们做表单数据提交,发现,我们的model层,数据类型总是 Date类型, 明明我们在 DatePicker 上设置了 format= 'yyyy-MM-dd' 啊

是吧,懵逼了!

这个 format='yyyy-MM-dd' 是显示的格式,不是最终vue中data对象上的内容

直接看最终代码

<Form :model='formModel'>
	<FormItem>
    	<DatePicker 
        	format='yyyy-MM-dd' 
            v-model='formModel.startDate'
        	@on-change='formModel.startDate = $event' 
            type='date'>
          </DatePicker>
    </FormItem>
    
    <FormItem>
    	<Button @click='handleSubmit'>提交</Button>
    </FormItem>
</Form>

export default {
	data () {
    	return {
        	// 快速做数据收集
        	formModel: {
            	startTime: '',
	            endTime: ''
                // 其他字段
                。。。。。
            }
        }
    },
    method: {
    	async handleSubmit() {
        	// 一次性将 someAPI 这个接口需要数据收集到
        	let res = await someAPI(this.formModel)
        }
    }
}

上面的示例,主要有2个

  • 表单组件的 model 属性 一次性收集接口入参
  • on-change 事件,在日期控件的值发生变化,及时复写 formModel中的字段, 且 $event 是我们设置的 format 格式化以后的数据 ,刚好就是接口所需要的

这就避免了 在 handleSubmit 提交数据的时候,再二次处理日期格式问题,代码更简洁