如何解决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 相关文章推荐
JavaScript入门教程(1) 什么是JS
Jan 31 Javascript
真正的JQuery.ajax传递中文参数的解决方法
May 28 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
May 27 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
Aug 30 Javascript
JS检测输入字符是否包含非法字符的示例代码
Feb 11 Javascript
JavaScript实现随机替换图片的方法
Apr 16 Javascript
Angularjs中如何使用filterFilter函数过滤
Feb 06 Javascript
Javascript的表单验证长度
Mar 16 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
Nov 16 Javascript
JS实现的适合做faq或menu滑动效果示例
Nov 17 Javascript
jsonp格式前端发送和后台接受写法的代码详解
Nov 07 Javascript
JS实现多选框的操作
Jun 24 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中截取中文字符串的代码小结
2011/07/17 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
PHP中使用smarty生成静态文件的例子
2014/04/24 PHP
图文详解PHP环境搭建教程
2016/07/16 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
Python导入txt数据到mysql的方法
2015/04/08 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
编写多线程Python服务器 最适合基础
2018/09/14 Python
python解析含有重复key的json方法
2019/01/22 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
windows上安装python3教程以及环境变量配置详解
2019/07/18 Python
基于python plotly交互式图表大全
2019/12/07 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
Python是怎样处理json模块的
2020/07/16 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
2021/03/03 Python
大学生如何写自荐信
2014/01/08 职场文书
给领导的检讨书
2014/02/16 职场文书
公司营业员的自我评价
2014/03/04 职场文书
鲁冰花观后感
2015/06/10 职场文书
100句拼搏进取的名言警句,值得一读!
2019/10/07 职场文书
pytorch 如何使用float64训练
2021/05/24 Python
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL