基于vue2.0实现的级联选择器


Posted in Javascript onJune 09, 2017

基于Vue的级联选择器,可以单项,二级, 三级级联,多级级联

web开发中我们经常会遇到级联选择器的问题,尤其是在表单中,无外乎几种情况:

  1. 单个级联 (下拉选择框,单选)
  2. 单个级联 (多项选择)
  3. 二级联动 (省份和城市联动)
  4. 三级联动 (省市区联动)

在jquery中有很多好用的插件,比如select2, 单选,多选的功能都具备。

本文探讨一下在vue中的实现级联选择器,自己在项目中碰到过以下两种情况的后端数据,查阅资料后也证实了这两种数据的合理性:

预览地址

github地址

1 后端处理数据逻辑

这种情况是比较推荐的,大量的数据运算放在后端来进行,只需前后端商量好数据格式即可

一般的数据格式可能如下:

[{
 value: 'beijing',
 label: '北京',
 children: [{
  value: 'chaoyang',
  label: '朝阳'
 }, {
  value: 'haidian',
  label: '海淀'
 }, {
  value: 'changping',
  label: '昌平'
 }, {
  value: 'shunyi',
  label: '顺义'
 }]
}, {
 value: 'shanghai',
 label: '上海',
 children: [{
  value: 'baoshan',
  label: '宝山'
 }, {
  value: 'jiading',
  label: '嘉定'
 }, {
  value: 'songjiang',
  label: '松江'
 }, {
  value: 'pudong',
  label: '浦东'
 }]
}]

特点:数据之间层级嵌套,上下级的关系很清晰

2 前端处理数据逻辑

这种情况适合数据量较小的数据,或者由于某种原因后端只能返给你这种数据,那所有的数据处理就需要前端来操作,最终拼成的格式也与上述情况类似,只不过是多几个或少几个字段的问题。

数据格式可能会是这样:

[{
 code: 420000,
 name: '湖北省',
 parentCode: 0
},
{
 code: 420100,
 name: '武汉市',
 parentCode: 420000
},
{
 code: 420101,
 name: '市辖区',
 parentCode: 420100
},
{
 code: 420102,
 name: '江岸区',
 parentCode: 420100
},
{
 code: 420103,
 name: '江汉区',
 parentCode: 420100
},
{
 code: 420104,
 name: '?口区',
 parentCode: 420100
},
{
 code: 420105,
 name: '汉阳区',
 parentCode: 420100
},
{
 code: 421000,
 name: '荆州市',
 parentCode: 420000
},
{
 code: 421001,
 name: '市辖区',
 parentCode: 421000
},
{
 code: 421002,
 name: '沙市区',
 parentCode: 421000
},
{
 code: 421003,
 name: '荆州区',
 parentCode: 421000
},
{
 code: 430000,
 name: '湖南省',
 parentCode: 0
},
{
 code: 430100,
 name: '长沙市',
 parentCode: 430000
},
{
 code: 430101,
 name: '市辖区',
 parentCode: 430100
},
{
 code: 430102,
 name: '芙蓉区',
 parentCode: 430100
},
{
 code: 430103,
 name: '天心区',
 parentCode: 430100
},
{
 code: 430104,
 name: '岳麓区',
 parentCode: 430100
}]

特点:数据格式是个平面表,每一条数据中都带有与之相对应的上下级关系。当我们查看某个数据的上下级时,都需要重新去遍历一遍数据。

如何在组件中使用

<div class="hello">
 <form-organization :organization="organization" v-model="seleted"></form-organization>
</div>

<script>
import FormOrganization from '@/components/FormOrganization'
export default {
 name: 'hello',
 data () {
  return {
   seleted: [],
   organization: [{
    value: 'beijing',
    label: '北京'
   }, {
    value: 'shanghai',
    label: '上海'
   }, {
    value: 'shenzhen',
    label: '深圳'
   }, {
    value: 'hangzhou',
    label: '杭州'
   }, {
    value: 'zhengzhou',
    label: '郑州'
   }, {
    value: 'guangzhou',
    label: '广州'
   }, {
    value: 'xiamen',
    label: '厦门'
   }]
  }
 },
 components: {
  FormOrganization
 }
}
</script>

API

props type description
origanization Array 级联数据源,格式必须按照第一种数据中的格式显示
value Array 选中中或默认值,可以直接用v-model语法糖,具体可以查看例子

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
ajax中get和post的说明及使用与区别
Dec 23 Javascript
js实现全屏漂浮广告移入光标停止移动
Dec 02 Javascript
jQuery CSS()方法改变现有的CSS样式表
Sep 09 Javascript
js读取并解析JSON类型数据的方法
Nov 14 Javascript
Bootstrap每天必学之简单入门
Nov 19 Javascript
jQuery stop()用法实例详解
Jul 28 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
Dec 26 Javascript
详解angular2封装material2对话框组件
Mar 03 Javascript
Vuex中mutations与actions的区别详解
Mar 01 Javascript
一个基于react的图片裁剪组件示例
Apr 18 Javascript
Layui 设置select下拉框自动选中某项的方法
Aug 14 Javascript
Vue实现日历小插件
Jun 26 Javascript
JavaScript设计模式之代理模式详解
Jun 09 #Javascript
vue.js+Echarts开发图表放大缩小功能实例
Jun 09 #Javascript
vue2 中如何实现动态表单增删改查实例
Jun 09 #Javascript
JS创建Tag标签的方法详解
Jun 09 #Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
Jun 09 #Javascript
JS实现的随机排序功能算法示例
Jun 09 #Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
Jun 09 #jQuery
You might like
S900/ ETON E1-XM 收音机
2021/03/02 无线电
非常有用的9个PHP代码片段
2016/04/06 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
vue数据双向绑定原理解析(get &amp; set)
2017/03/08 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
python 查找字符串是否存在实例详解
2017/01/20 Python
python爬取网易云音乐评论
2018/11/16 Python
set在python里的含义和用法
2019/06/24 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
应届生会计电算化求职信
2013/10/03 职场文书
2014年元旦活动方案
2014/02/15 职场文书
教学质量评估实施方案
2014/03/17 职场文书
农村产权制度改革实施方案
2014/03/21 职场文书
经营目标管理责任书
2014/07/25 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
商场收银员岗位职责
2015/04/07 职场文书
英雄儿女观后感
2015/06/09 职场文书
子女赡养老人协议书
2016/03/23 职场文书