如何解决vue与传统jquery插件冲突


Posted in Javascript onMarch 20, 2017

本篇文章主要介绍了如何解决vue与传统jquery插件冲突,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

比如基于jquery的select2插件,在vue下单独用有很多问题,其实对于这类插件,可以用vue的自定义指令和组件来包装,解决冲突的问题。引用官方vue1.0和2.0的两个例子,学习一下。

 例子1.0  例子2.0

大功告成。说说基于vue1的,对于下拉单选,用vue官方的例子即可,对于多选,看下面自己写的,核心是用指令对象的el、vm等获取被select2改变后的select下拉列表的相应对象,关键点是用jquery包装原生元素后用.val()获取多选值。

<body>
  <div id="el">
   <p>Selected: {{selected}}</p>
   <select v-select3="selected" multiple class="app1" >
    <option value="0">default</option>
    <option v-for="o in options" :value="o.id">{{ o.text }}</option>
   </select>
    
    <p>Selected: {{market}}</p>
   <select v-select3="market" multiple class="app2" >
    <option value="0">default</option>
    <option v-for="o in markets" :value="o.id">{{ o.text }}</option>
   </select>
  </div>
  <script>
    Vue.directive('select3', {
     twoWay: true,
     priority: 1000,

     params: ['options'],
      
     bind: function () {
      var self = this;
      $(this.el)
       .select2()
       .on('change', function () {
        self.set($(self.el).val());
        console.log($(self.el).val());
        if ( self.expression == 'selected') {
          self.vm.market = [];
        }

       })
     },
     update: function (value) {
      
      $(this.el).val(value).trigger('change')
     },
     unbind: function () {
      $(this.el).off().select2('destroy')
     }
    })

    var vm = new Vue({
     el: '#el',
     data: {
      selected: 0,
      market: '',
      options: [
       { id: 1, text: 'hello' },
       { id: 2, text: 'what' }
      ],
      markets: [
        { id: 1, text: '文山二手车' },
        { id: 2, text: '小哥二手车' }
      ]
     }
    });
    setTimeout(function () {
     vm.market = 0;
    }, 0);
  </script>
</body>

另外,在插入默认值的时候,注意做一个异步插入,因为vue更新页面是异步的,这里做了一个setTimeout( , 0)。

另外在单页里,考虑在SSpa的show的时候,设置一状态位vm.isInit,表示若是初始化默认选项,判断onchange里是否触发相关改变的时候不重新设置一些值的清空以及获取 。

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

Javascript 相关文章推荐
jQuery插件-jRating评分插件源码分析及使用方法
Dec 28 Javascript
jquery 删除cookie失效的解决方法
Nov 12 Javascript
js substring从右边获取指定长度字符串(示例代码)
Dec 23 Javascript
js中array的sort()方法使用介绍
Feb 20 Javascript
JavaScript 学习笔记之基础中的基础
Jan 13 Javascript
JavaScript如何获取数组最大值和最小值
Nov 18 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
May 11 Javascript
javascript 数组去重复(在线去重工具)
Dec 17 Javascript
基于jQuery实现照片墙自动播放特效
Jan 12 Javascript
js 判断数据类型的几种方法
Jan 13 Javascript
详解jQuery的核心函数和事件处理
Feb 18 jQuery
实现AJAX异步调用和局部刷新的基本步骤
Mar 17 Javascript
Vue.js路由vue-router使用方法详解
Mar 20 #Javascript
Vue插件写、用详解(附demo)
Mar 20 #Javascript
详解vue事件对象、冒泡、阻止默认行为
Mar 20 #Javascript
javascript使用btoa和atob来进行Base64转码和解码
Mar 20 #Javascript
vue.js事件处理器是什么
Mar 20 #Javascript
Vue.js事件处理器与表单控件绑定详解
Mar 20 #Javascript
Vue.js基础学习之class与样式绑定
Mar 20 #Javascript
You might like
PHP编实现程动态图像的创建代码
2008/09/28 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
python根据经纬度计算距离示例
2014/02/16 Python
Python入门_条件控制(详解)
2017/05/16 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
python实现飞行棋游戏
2020/02/05 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
Django视图类型总结
2021/02/17 Python
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
财务管理职业生涯规划范文
2013/12/27 职场文书
中学运动会广播稿
2014/01/19 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
家长学校培训材料
2014/08/20 职场文书
个人自查自纠材料
2014/10/14 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
客房服务员岗位职责
2015/02/09 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis