zoukankan      html  css  js  c++  java
  • 使用watch监听element-ui中的日期时间选择器

    需求:开始时时间大于结束时间,结束时间要大于等于结束时间两小时。

    使用watch监听开始,结束时间

    <template>
        <el-form label-width="100px">
          <el-form-item label="开始时间">
            <el-date-picker
              v-model="value1"
              type="datetime"
              placeholder="选择日期时间"
              align="right"
            >
            </el-date-picker>
          </el-form-item>
          <el-form-item label="结束时间">
            <el-date-picker
              v-model="value2"
              type="datetime"
              placeholder="选择日期时间"
              align="right"
            >
            </el-date-picker>
          </el-form-item>
        </el-form>
    </template>
    
    <script>
    export default {
      data() {
        return {
          value1: new Date(),
          value2: new Date(new Date().getTime() + 1000 * 3600 * 2),
        };
      },
      watch: {
       
        value1: {
          handler(newTime, oldTime) {
            if (this.value2 != "" && this.value2 != null) {
              if (new Date(this.value2).getTime() <= newTime.getTime()) {
                this.value2 = new Date(newTime.getTime() + 1000 * 3600 * 2);
                this.value1 = newTime;
              } else {
                this.value1 = newTime;
              }
            } else {
              this.value2 = new Date(newTime.getTime() + 1000 * 3600 * 2);
              this.value1 = newTime;
            }
          },
          immediate: true,
        },
        value2: {
          handler(newTime, oldTime) {
            if (this.value1 != "" && this.value2 != null) {
              if (new Date(this.value1).getTime() >= newTime.getTime()) {
                this.value1 = new Date(newTime.getTime() - 1000 * 3600 * 2);
                this.value2 = newTime;
              } else {
                this.value2 = newTime;
              }
            } else {
              this.value1 = new Date(newTime.getTime() - 1000 * 3600 * 2);
              this.value2 = newTime;
            }
          },
          immediate: true,
        },
      },
    };
    </script>

    immediate表示在watch中首次绑定的时候,是否执行handler方法,值为true则表示在watch中声明的时候,就立即执行handler方法,值为false,则和一般使用watch一样,在数据发生变化的时候才执行handler。

    在handler方法中,不能以箭头函数定义,不然this不能指向vue实例。

  • 相关阅读:
    pins-模块内的代码及资源隔离方案
    Android Gradle defaultConfig详解及实用技巧
    实用抓包工具:whistle
    Gradle中的闭包
    Android Gradle 依赖配置:implementation & api
    Android Studio Run项目出现Failure [INSTALL_FAILED_TEST_ONLY]
    Android 8.0对隐式广播的进一步限制
    cookie 详解
    一分钟内搭建全web的API接口神器json-server详解
    高性能前端 art-template 模板
  • 原文地址:https://www.cnblogs.com/shanchui/p/14727211.html
Copyright © 2011-2022 走看看