vue2.x select2 指令封装详解


Posted in Javascript onOctober 12, 2017

本文介绍了vue2.x select2 指令封装,分享给大家,具体如下:

其他的就不说了,说说封装过程的问题吧

1、vue不同版本指令接受参数不一样

2、酱油君对于vue2.x双向绑定的机制不了解(有大神路过望在评论中不吝赐教)

上代码:

<!DOCTYPE html>
<html>
<head>
  <title>vue select2 封装</title>
  <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="external nofollow" rel="stylesheet" />
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
  <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
  <style type="text/css">
    .content{
      text-align: center;
      padding:50px;
    }
    .content *{
      text-align: left;
    }
    .select{
      width: 350px;
    }
  </style>
</head>
<body>
  <div class="content" id="vue-example">
    <select class="select" v-select2='options' v-model="selectValue"></select>
    <br/>
    <span>结果:{{ selectValue }}</span>
  </div>
</body>
<script type="text/javascript">
  Vue.directive('select2', {
   inserted: function (el, binding, vnode) {
     let options = binding.value || {};
 
    $(el).select2(options).on("select2:select", (e) => {
     // v-model looks for
     // - an event named "change"
     // - a value with property path "$event.target.value"
       el.dispatchEvent(new Event('change', { target: e.target })); //说好的双向绑定,竟然不安套路
    });
   },
   update: function(el, binding, vnode) {
    $(el).trigger("change");
   }
  });
 
  var vueApp = new Vue({
   el: "#vue-example",
   data: {
    selectValue: '你还没有选值',
    options: {
      data: [
          { id: 0, text: 'enhancement' },
        { id: 1, text: 'bug' },
        { id: 2, text: 'duplicate' },
        { id: 3, text: 'invalid' },
        { id: 4, text: 'wontfix' }
      ]
    }
   }
  });
</script>
</html>

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

Javascript 相关文章推荐
跨域表单提交状态的变相判断代码
Nov 12 Javascript
IE的事件传递-event.cancelBubble示例介绍
Jan 12 Javascript
微信小程序 Storage API实例详解
Oct 02 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
Dec 13 Javascript
js中this对象用法分析
Jan 05 Javascript
vue使用监听实现全选反选功能
Jul 06 Javascript
js实现带搜索功能的下拉框
Jan 11 Javascript
JavaScript实现字符串与HTML格式相互转换
Mar 17 Javascript
详细分析vue表单数据的绑定
Jul 20 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
Jul 27 Javascript
vue - props 声明数组和对象操作
Jul 30 Javascript
javascript实现左右缓动动画函数
Nov 25 Javascript
一个简易时钟效果js实现代码
Mar 25 #Javascript
微信小程序实现页面跳转传值的方法
Oct 12 #Javascript
微信小程序 页面滑动事件的实例详解
Oct 12 #Javascript
微信小程序 动画的简单实例
Oct 12 #Javascript
node通过npm写一个cli命令行工具
Oct 12 #Javascript
JS实现自定义状态栏动画文字效果示例
Oct 12 #Javascript
AngularJS实现表单验证功能详解
Oct 12 #Javascript
You might like
开发大型 PHP 项目的方法
2007/01/02 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
javascript数据类型示例分享
2015/01/19 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
Python读取Excel的方法实例分析
2015/07/11 Python
Python 获取项目根路径的代码
2019/09/27 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Python bytes string相互转换过程解析
2020/03/05 Python
Django数据库迁移常见使用方法
2020/11/12 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
Python 里最强的地图绘制神器
2021/03/01 Python
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
C/C++程序员常见面试题一
2012/12/08 面试题
银行职员思想汇报
2013/12/31 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
环保口号大全
2014/06/12 职场文书
农业项目建议书
2014/08/25 职场文书
元宵节晚会主持词
2015/07/01 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
pycharm debug 断点调试心得分享
2021/04/16 Python
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js
MySQL多表查询机制
2022/03/17 MySQL