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中配置scss全局变量的步骤
Dec 28 Vue.js
vue调用微信JSDK 扫一扫,相册等需要注意的事项
Jan 03 Vue.js
vue自定义组件实现双向绑定
Jan 13 Vue.js
vue实现可移动的悬浮按钮
Mar 04 Vue.js
手写Vue2.0 数据劫持的示例
Mar 04 Vue.js
详解Vue的options
May 15 Vue.js
vue使用节流函数的踩坑实例指南
May 20 Vue.js
在vue中import()语法不能传入变量的问题及解决
Apr 01 Vue.js
vue中div禁止点击事件的实现
Apr 02 Vue.js
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
vue elementUI表格控制对应列
Apr 13 Vue.js
vue @click.native 绑定原生点击事件
Apr 22 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下拉选项的批量操作的实现代码
2013/10/14 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
2019/11/01 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
Python入门篇之字符串
2014/10/17 Python
Python切片知识解析
2016/03/06 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
python爬取指定微信公众号文章
2018/12/20 Python
python取余运算符知识点详解
2019/06/27 Python
matlab中imadjust函数的作用及应用举例
2020/02/27 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
违反校纪校规检讨书
2014/02/15 职场文书
德语专业求职信
2014/03/12 职场文书
新闻报道策划方案
2014/06/11 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
英文邀请函
2015/02/02 职场文书
2015年外联部工作总结
2015/04/03 职场文书
亮剑观后感
2015/06/05 职场文书
聘任通知书
2015/09/21 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
修辞手法有哪些?
2019/08/29 职场文书
创业计划书之餐饮
2019/09/02 职场文书