需求是这样的:
数据渲染表格,表格里每行都有一个“编辑”按钮,点击拿到当前点击行的信息,并弹窗展示该行信息,并可编辑,其中有一项就是有效期,该项用到element ui 的日期时间选择器,type设置为datetimerange,但是!给日期时间控件添加了当前行内的日期后,点击重新更改日期,model是拿到最新值了,view没有拿到,点击确定后展示的还是旧的值,看了一些参考文章,得出代码:
html:
<el-date-picker
v-model="templateList.rangedate"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
js:
this.$set(this.templateList,'rangedate',[this.templateList.effectiveTime,this.templateList.expiryTime]);
后台返回了两个值(2022/01/01 12:54:12 和 2022/12/12 01:02:03):分别存在templateList.beginTime和templateList.endTime中,而日期时间选择器赋值需要是一个数组,所以将他们存在templateList.rangedate(这是一个数组)中。
但是直接给this.templateList.rangedate赋值,用this.templateList.rangedate = [templateList.expiryTime , templateList.effectiveTime]的话,model更新了,但是view未能检测到数据的变化(至于为什么没检测到还有点不太清楚-。-),所以这时候就需要用到$set,赋值,并触发更新视图。
完美解决。
参考文章:https://www.jianshu.com/p/920c5d54fa66