zoukankan      html  css  js  c++  java
  • Vue引用第三方datepicker插件无法监听datepicker输入框的值

    一、背景

    在Vue项目中使用了第三方的datepicker插件,在选择日期后vue无法检测到datepicker输入框的变化

    ``` <label class="fl">日期:</label> <div class="input-wrapper fr"> <input class="daterangepicker" ref="datepicker" v-model="dateRange"/> <a href="javascript:;"></a> </div> ```
    
    export default {
        data() {
            return {
                dateRange: ''
            }
        },
        watch: {
            dateRange(newVal, oldVal) {
                console.log(newVal) // 选择日期后无法监听dateRange的改变
            }
        }
    }
    
    

    二、分析

    查找资料发现:Vue实际上无法监听由第三方插件所引起的数据变化。因此上面的方法是行不通的。但是,Vue给我们提供的一个方法,它可以将任意数据转化为可以被Vue监听到的数据,他就是:vm.$set。

    三、解决

    以我用到的datepicker为例(jquery-daterangepicker)

    
    data() {
            return {
                date: '',
                beginDate: '',
                endDate: ''
            }
        },
    mounted () {
        $('.daterangepicker').dateRangePicker({
            autoClose: true,
            format: 'YYYY-MM-DD'
        }).bind('datepicker-change', this.setDate) //插件自带方法,选择日期后触发回调
      },
    methods: {
        setDate() {
            let datepicker = this.$refs.datepicker
            //这一步是关键,具体说明可以参见vue api手册
            this.$set(this.date, 'beginDate', datepicker.value)
            this.$set(this.date, 'endDate', datepicker.value)
            this.beginDate = this.date.beginDate.slice(0, 11)
            this.endDate = this.date.endDate.slice(-10)
        }    
      },
        watch: {
        // 这里就可以监听数据变化啦,可以愉快的选择日期了!
          beginDate(newVal, oldVal) {
              this.$emit( 'beginDateChange', newVal )
          },
          endDate(newVal, oldVal) {
              this.$emit( 'endDateChange', newVal )
          }
        }
    

    原文地址:https://segmentfault.com/a/1190000013012963

  • 相关阅读:
    Linux之文件处理命令
    Linux基础命令
    rip实验
    Linux基础之磁盘分区
    mysql安装
    centos Apache、php、mysql默认安装路径
    You probably tried to upload too large file. Please refer to documentation for ways to workaround this limit.
    Wrong permissions on configuration file, should not be world writable!
    机器会学习么 学习总结
    实验 5 Spark SQL 编程初级实践
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9951945.html
Copyright © 2011-2022 走看看