如何解决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的代码显示区域自动拉长效果
Dec 07 Javascript
JS实现程序暂停与继续功能代码解读
Oct 10 Javascript
原生js做的手风琴效果的导航菜单
Nov 08 Javascript
jQuery的选择器中的通配符使用介绍
Mar 20 Javascript
我的Node.js学习之路(四)--单元测试
Jul 06 Javascript
javascript实现捕捉键盘上按下的键
May 05 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
Jul 03 Javascript
使用原生js+canvas实现模拟心电图的实例
Sep 20 Javascript
javascript数组的定义及操作实例
Nov 10 Javascript
vue $router和$route的区别详解
Dec 02 Vue.js
JavaScript对象访问器Getter及Setter原理解析
Dec 08 Javascript
微信小程序抽奖组件的使用步骤
Jan 11 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 之 没有mysql支持时的替代方案
2006/10/09 PHP
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
PHP命名空间(Namespace)的使用详解
2013/05/04 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
PHP经典实用正则表达式小结
2017/05/04 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
微信小程序结合mock.js实现后台模拟及调试
2019/03/28 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
什么是唯一索引
2015/07/05 面试题
房产销售经理职责
2013/12/20 职场文书
师德学习感言
2014/01/31 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
订货会邀请函
2015/01/31 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python