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+iview实现文件上传
Nov 17 Vue.js
vue下拉刷新组件的开发及slot的使用详解
Dec 23 Vue.js
Vue实现省市区三级联动
Dec 27 Vue.js
vue+element UI实现树形表格
Dec 29 Vue.js
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
vue element el-transfer增加拖拽功能
Jan 15 Vue.js
详解实现vue的数据响应式原理
Jan 20 Vue.js
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
vue+django实现下载文件的示例
Mar 24 Vue.js
SSM VUE Axios详解
Oct 05 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
vue实现input输入模糊查询的三种方式
Aug 14 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
967 个函式
2006/10/09 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
php中session退出登陆问题
2014/02/27 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
JavaScript获得表单target属性的方法
2015/04/02 Javascript
老生常谈 js中this的指向
2016/06/30 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Python中使用Beautiful Soup库的超详细教程
2015/04/30 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
伦敦哈德森鞋:Hudson Shoes
2018/02/06 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
环境科学专业大学生自荐信格式
2013/09/21 职场文书
留学推荐信中文范文三篇
2014/01/25 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
跑操口号
2014/06/12 职场文书
故宫的导游词
2015/01/31 职场文书
2015年司法所工作总结
2015/04/27 职场文书