Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决


Posted in Javascript onJanuary 27, 2018

一、背景

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

<label class="fl">日期:</label>
 <div class="input-wrapper fr">
  <input class="daterangepicker" ref="datepicker" v-model="dateRange"/>
  <a href="javascript:;" rel="external nofollow" ></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 )
   }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
Jan 15 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
Oct 12 Javascript
禁止IE用右键的JS代码
Dec 30 Javascript
js基础知识(公有方法、私有方法、特权方法)
Nov 06 Javascript
jquery实现界面无刷新加载登陆注册
Jul 30 Javascript
vue中引用swiper轮播插件的教程详解
Aug 16 Javascript
vue中axios请求的封装实例代码
Mar 23 Javascript
elementUI table表格动态合并的示例代码
May 15 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
May 21 Javascript
layui递归实现动态左侧菜单
Jul 26 Javascript
layui 对table中的数据进行转义的实例
Sep 12 Javascript
vue实现员工信息录入功能
Jun 11 Javascript
浅谈React中组件间抽象
Jan 27 #Javascript
React Native中NavigatorIOS组件的简单使用详解
Jan 27 #Javascript
ejsExcel模板在Vue.js项目中的实际运用
Jan 27 #Javascript
使用D3.js创建物流地图的示例代码
Jan 27 #Javascript
javascript获取图片的top N主色值方法详解
Jan 26 #Javascript
Vue中render方法的使用详解
Jan 26 #Javascript
Angular利用trackBy提升性能的方法
Jan 26 #Javascript
You might like
php 全局变量范围分析
2009/08/07 PHP
php 获取全局变量的代码
2011/04/21 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
DHTML Slide Show script图片轮换
2008/03/03 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
javascript如何创建对象
2016/08/29 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
vue数据双向绑定原理解析(get &amp; set)
2017/03/08 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
python抓取文件夹的所有文件
2018/02/27 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
Django的性能优化实现解析
2019/07/30 Python
Python 图片处理库exifread详解
2021/02/25 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
工作会议欢迎词
2014/01/16 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
勤俭节约倡议书
2014/04/14 职场文书
小学生操行评语大全
2014/04/22 职场文书
2014年工程部工作总结
2014/11/25 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
超级礼物观后感
2015/06/15 职场文书
导游词之西递宏村
2019/12/10 职场文书
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA