如何解决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 相关文章推荐
JS中的this变量的使用介绍
Oct 21 Javascript
js实现class样式的修改、添加及删除的方法
Jan 20 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
Nov 04 Javascript
JS中闭包的经典用法小结(2则示例)
Dec 28 Javascript
微信小程序 页面跳转传递值几种方法详解
Jan 12 Javascript
js中setTimeout的妙用--防止循环超时
Mar 06 Javascript
JS正则获取HTML元素的方法
Mar 31 Javascript
jQuery表单设置值的方法
Jun 30 jQuery
基于Bootstrap的标签页组件及bootstrap-tab使用说明
Jul 25 Javascript
vue-better-scroll 的使用实例代码详解
Dec 03 Javascript
微信小程序实现商品属性联动选择
Feb 15 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
Sep 04 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
解析wamp5下虚拟机配置文档
2013/06/27 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
django2 快速安装指南分享
2018/01/05 Python
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
比利时香水网上商店:NOTINO
2018/03/28 全球购物
泰国网上购物:Shopee泰国
2018/09/14 全球购物
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
一个C/C++编程面试题
2013/11/10 面试题
八年级音乐教学反思
2014/01/09 职场文书
大学生村官任职感言
2014/01/09 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
英文辞职信范文
2015/05/13 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript