el-date-picker时间清空值为null处理

  • Post author:
  • Post category:其他




element 时间选择器处理选择值



当项目有时间选择器有查询条件定义数据为数组值,初始化值为空,当选择后值为一个数组,里面有两个值,再次清空时,值将变为null,传入后台将报错,采用watch监听处理这块bug!
elementui的时间选择器



项目中的一些代码

<el-col :span="10">
          <el-form-item label="日期">
            <el-date-picker
              v-model="overallForm.time"
              type="datetimerange"
              :picker-options="pickerOptions"
              range-separator="至"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              format="yyyy-MM-dd HH:mm:ss"
              value-format="yyyy-MM-dd HH:mm:ss"
              :default-time="['00:00:00', '23:59:59']"
              align="right"
            ></el-date-picker>
          </el-form-item>
        </el-col>
        定义的data
 data() {
    return {
      pickerOptions: {
        shortcuts: [
          {
            text: "最近一周",
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
              picker.$emit("pick", [start, end]);
            },
          },
          {
            text: "最近一个月",
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
              picker.$emit("pick", [start, end]);
            },
          },
          {
            text: "最近三个月",
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
              picker.$emit("pick", [start, end]);
            },
          },
        ],
      },
      overallForm: {
        time: [],
      },
    }
  },
  methods:{
    check(){
      let params = {
             startTime:  this.overallForm.time[0] ,
             endTime:  this.overallForm.time[1] ,
             limit: this.page.pageSize,
             page: this.page.pageNo,
          };
        //请求axios
        *************************
       } 
  }



这样在发送接口时会暴露出一些问题。就如上文中提到选择数据后清空后值不在是array而是null,这样使用watch监听



watch不要直接监听整个对象,直接监听精准值,避免不必要的性能浪费

  watch: {
    "overallForm.time"(newVal) {
      if (newVal == null) {
        this.overallForm.time = [];
      }
    },
  },



这样中间暴露的一些弊端就解决了



版权声明:本文为lixinhua_man原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。