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新手入门指导教程
Nov 18 Vue.js
vue实现表格合并功能
Dec 01 Vue.js
Vue实现随机验证码功能
Dec 29 Vue.js
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
Vue中的nextTick作用和几个简单的使用场景
Jan 25 Vue.js
vue 项目@change多个参数传值多个事件的操作
Jan 29 Vue.js
Vite和Vue CLI的优劣
Jan 30 Vue.js
如何封装Vue Element的table表格组件
Feb 06 Vue.js
Vue SPA 首屏优化方案
Feb 26 Vue.js
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
vue组件vue-esign实现电子签名
Apr 21 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
Yii2增加验证码步骤详解
2016/04/25 PHP
如何离线执行php任务
2017/02/21 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
javascript静态的url如何传递
2007/05/03 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
Node.js实现数据推送
2016/04/14 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
Vue父组件调用子组件事件方法
2018/02/23 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
react+redux仿微信聊天界面
2019/06/21 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
Python小进度条显示代码
2019/03/05 Python
Python for循环与getitem的关系详解
2020/01/02 Python
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
一套软件开发工程师笔试题
2015/05/18 面试题
化学专业毕业生自荐信
2013/11/15 职场文书
博士生导师推荐信
2014/07/08 职场文书
邀请函怎么写
2015/01/30 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
遗愿清单观后感
2015/06/09 职场文书
关于CSS浮动与取消浮动的问题
2021/06/28 HTML / CSS