Vue多选列表组件深入详解


Posted in Vue.js onMarch 02, 2021

多选列表 (Multi-Select) 是一种将所有选项列出,并允许用户利用 Ctrl/Shift 键进行多选的 UI 元素。这是一种常见的设计元素。有时候为了节省空间,我们会将选项折叠于 Combo Box 中。为了方便用户操作,这个组件还将添加 Select All 和 Clear All 两个按钮,允许用户快速选择或清除选择。这个 UI 元素曾被运用于 Correlation Plot App 中。

Vue多选列表组件深入详解

注册组件

注册 Multi-Select 组件,简单来说就是复制粘贴已封装好的代码部分。此处建议注册全局组件。

设计该元素的时候考虑了两种模式:第一种是每次点击新选项将保留旧选项并添加新选项,如上述示例图形。这种是较为常见的一种方式。第二种是每次点击新选项则清除旧选项仅保留新选项。若使用这种方式进行多选,则需要利用Ctrl/Shift键。这种设计能便于用户在每一次的点击中消除旧选项。若使用第二方式,需要替换事件@click.exact="AddToOrDeleteFromSelectedColumns"@click.exact="ClickOnColumnListItem"

<script type="text/x-template" id="multi-select-template">
…
   <tr v-for = "(item,index) in columns" 
     @click.exact="AddToOrDeleteFromSelectedColumns"
     @click.shift.exact="AddMultipleToSelectedColumns"
     @click.ctrl.exact="AddToOrDeleteFromSelectedColumns"
     :title="function(item){if(item.longname){return 'Short Name: ' + item.name + '\n----------------\n' + item.longname}else{return item.name}}(item)"
     class="column-list-entry">
   ...
   </tr>
</script>
<script>
Vue.component("multi-select", {
  template: "#multi-select-template",
…
</script>

调用组件

直接添加自定义标签 调用组件。

<multi-select :legend_name="legend_name"
       :columns="columns"
       :selected_columns="selected_columns"
       @update_selected_columns="onSelectedColumnsChange">
</multi-select>

传递数据

最后还需要对组件传递数据。我们可以利用 v-bind 动态绑定数据到父级组件的数据中。

props 中 legend_name 绑定 Multi-Select 的所需显示的名称,columns 绑定 Multi-Select 的选项, selected_columns 绑定当前的已选项。另外我们还需要在父级实例中定义事件 “onSelectedColumnsChange”,用于刷新 Multi-Select 组件的显示。

data: function(){
   return {
     legend_name: "Input Columns",
     columns: 
     [
       {"name":"A","longname":"Copper"},
       {"name":"B","longname":"Aluminum Aluminum"},
       {"name":"C","longname":"Calcium"},
       {"name":"D","longname":"Calcium"},
   ],
     selected_columns: [],
   }
 },
... 
methods:{ 
   onSelectedColumnsChange:function(new_columns) {
     this.selected_columns = new_columns;
   },
 },
...

到此这篇关于Vue多选列表组件深入详解的文章就介绍到这了,更多相关Vue多选列表组件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue+element_ui上传文件,并传递额外参数操作
Dec 05 Vue.js
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 Vue.js
vue实现登录、注册、退出、跳转等功能
Dec 23 Vue.js
vue3自定义dialog、modal组件的方法
Jan 04 Vue.js
vue 计算属性和侦听器的使用小结
Jan 25 Vue.js
Vue SPA 首屏优化方案
Feb 26 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
vue 自定义的组件绑定点击事件
Apr 21 Vue.js
Vue Mint UI mt-swipe的使用方式
Jun 05 Vue.js
Vue2项目中对百度地图的封装使用详解
Jun 16 Vue.js
Vue2.x-使用防抖以及节流的示例
Mar 02 #Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 #Vue.js
vue脚手架项目创建步骤详解
Mar 02 #Vue.js
vue-cli中实现响应式布局的方法
Mar 02 #Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 #Vue.js
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 #Vue.js
vue实现拖拽进度条
Mar 01 #Vue.js
You might like
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
微信支付开发订单查询实例
2016/07/12 PHP
PHP 布尔值的自增与自减的实现方法
2018/05/03 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
IE iframe的onload方法分析小结
2010/01/07 Javascript
超简单的jquery的AJAX用法
2010/05/10 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
javascript回调函数详解
2018/02/06 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
2020/11/06 Javascript
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
高中生旷课检讨书
2014/10/08 职场文书
党支部先进事迹材料
2014/12/24 职场文书
新员工考核评语
2014/12/31 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
公司管理建议书
2015/09/14 职场文书