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中使用transition和animation的实例代码
Dec 12 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
Vuex实现简单购物车
Jan 10 Vue.js
详解vue之自行实现派发与广播(dispatch与broadcast)
Jan 19 Vue.js
详解实现vue的数据响应式原理
Jan 20 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
VUE实现吸底按钮
Mar 04 Vue.js
vue组件的路由高亮问题解决方法
May 11 Vue.js
Vue如何实现组件间通信
May 15 Vue.js
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 Vue.js
vue生命周期钩子函数以及触发时机
Apr 26 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
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
最简单的js图片切换效果实现代码
2011/09/24 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
实例讲解vue源码架构
2019/01/24 Javascript
Python 多进程和数据传递的理解
2017/10/09 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
python实现代码统计程序
2019/09/19 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
九年级体育教学反思
2014/01/23 职场文书
入党申请自荐书范文
2014/02/11 职场文书
运动会入场式解说词
2014/02/18 职场文书
网络优化专员求职信
2014/05/04 职场文书
房展策划方案
2014/06/07 职场文书
文秘应届生求职信
2014/07/05 职场文书
丧事主持词
2015/07/02 职场文书