如何解决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的数据类型、字面量、变量介绍
May 23 Javascript
javascript获取xml节点的最大值(实现代码)
Dec 11 Javascript
js设置控件的隐藏与显示的两种方法
Aug 21 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
Sep 30 Javascript
Javascript之Date对象详解
Jun 07 Javascript
NODE.JS跨域问题的完美解决方案
Oct 20 Javascript
基于jQuery实现Accordion手风琴自定义插件
Oct 13 Javascript
微信公众平台开发教程(五)详解自定义菜单
Dec 02 Javascript
详细分析JS函数去抖和节流
Dec 05 Javascript
使用Vue CLI创建typescript项目的方法
Aug 09 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
Feb 03 Javascript
vuex的使用步骤
Jan 06 Vue.js
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
Protoss建筑一览
2020/03/14 星际争霸
使用Apache的rewrite技术
2006/06/22 PHP
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
基于JQuery的密码强度验证代码
2010/03/01 Javascript
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
2017/03/02 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
python多线程使用方法实例详解
2019/12/30 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
css3的过滤效果简单实例
2016/08/03 HTML / CSS
东方电视购物:东方CJ
2016/10/12 全球购物
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
给幼儿园老师的表扬信
2014/01/19 职场文书
教师个人鉴定材料
2014/02/08 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
党性分析自查总结
2014/10/14 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB