vant IndexBar实现的城市列表的示例代码


Posted in Javascript onNovember 20, 2019

在开发中有个需求是一个选择城市的列表,看了看做成三级联动好像不是特别方便 还是做成一整页可以按导航选取的就可以了

话不多说开始上码

我用的是vant这个ui框架中的IndexBar组件 其实这个组件已经把需要的都弄好了 我们只要处理数据就好了

首先需要引入IndexBar组件 这个就不再赘述了 官网写的很清楚

点击索引栏时,会自动跳转到对应的IndexAnchor锚点位置

<van-index-bar>
 <van-index-anchor index="A" />
 <van-cell title="文本" />
 <van-cell title="文本" />
 <van-cell title="文本" />

 <van-index-anchor index="B" />
 <van-cell title="文本" />
 <van-cell title="文本" />
 <van-cell title="文本" />

 ...
</van-index-bar>

这是vant官方文档IndexBar的基本用法文档

IndexAnchor默认是A-Z这里我们不用去自定义

循环部分 我的思路是按每个城市名称的首个字母排序

然后来看看我的数据

{
  "id": 101,
  "name": "北京市",
  "pid": 1,
  "code": 0
},
{
  "id": 10101,
  "name": "天津市",
  "pid": 10001,
  "code": 0
},
{
  "id": 20101,
  "name": "石家庄市",
  "pid": 20001,
  "code": 130100
}

因为之前的数据很乱 所以我让后台老哥重新写了一个只包含市级城市的列表 这样就非常好处理了

第一步先把城市的名称取出

一个简单的循环就OK

let cityNameList = []
for(let p in cityList){
  cityNameList.push(cityList[p].name)
}

ok现在我们就把城市的名称存到了cityNameList中了

下面一步就是关键的一步了
直接将数组的首字母取出来并按照A-Z排序
这里用到了一个插件pinyin 用它来将中文的首字母取出来
首先安装

npm install js-pinyin

然后我是在mian.js中引入的

import pinyin from 'js-pinyin'

然后在你的业务页面配置

let pinyin = require('js-pinyin')
pinyin.setOptions({checkPolyphone:false,charCase:0})

然后就可以使用了

直接一个循环达到我们的效果

let firstName = {};
this.FirstPin.forEach((item)=>{
  firstName[item] = [];
  cityNameList.forEach((el)=>{
    let first = pinyin.getFullChars(el).substring(0,1);
    if( first == item ){
     firstName[item].push(el)
    }    
  })
 })

这里的FirstPin是在data中定义的一个数组,用来存储A-Z

FirstPin: ["A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "W", "X", "Y", "Z"],

然后我的firstName的格式是这样的

firName:{
  A:["阿拉善盟","鞍山市"]
}

最后在InderBar组件中写一个循环就可以了

<van-index-bar class="indexBar" :sticky="false" highlight-color="#fb6463">
    <van-index-anchor  v-for="(item,index) in firstName" :key="index" :index="index">
     <span class="indexWord">{{index}}</span>
     <van-cell @click="chooseCity(citem)" v-for="(citem,cindex) in item" :key="cindex" :title="citem"/>
    </van-index-anchor>
 </van-index-bar>

vant IndexBar实现的城市列表的示例代码

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

Javascript 相关文章推荐
jquery validate.js表单验证的基本用法入门
May 13 Javascript
jquery多选项卡效果实例代码(附效果图)
Mar 23 Javascript
中文路径导致unitpngfix.js不正常的解决方法
Jun 26 Javascript
javascript 中that的含义示例介绍
May 14 Javascript
jQuery绑定事件不执行但alert后可以正常执行
Jun 03 Javascript
javascript中Date对象的getDay方法使用指南
Dec 22 Javascript
javascript实现的简单计时器
Jul 19 Javascript
js查看一个函数的执行时间实例代码
Sep 12 Javascript
使用cropper.js裁剪头像的实例代码
Sep 29 Javascript
Vue模板语法中数据绑定的实例代码
May 17 Javascript
js针对图片加载失败的处理方法分析
Aug 24 Javascript
序列化模块json代码实例详解
Mar 03 Javascript
Vue中rem与postcss-pxtorem的应用详解
Nov 20 #Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
Nov 20 #Javascript
vue3.0中使用postcss-pxtorem的具体方法
Nov 20 #Javascript
基于Vue+ElementUI的省市区地址选择通用组件
Nov 20 #Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
Nov 20 #Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
Nov 20 #Javascript
详解Nuxt.js 实战集锦
Nov 19 #Javascript
You might like
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
实用函数5
2007/11/08 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
javascript 单选框,多选框美化代码
2008/08/01 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
python中的多线程实例教程
2014/08/27 Python
详解Django中Request对象的相关用法
2015/07/17 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
什么是python的函数体
2020/06/19 Python
从python读取sql的实例方法
2020/07/21 Python
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
鱼油专家:Omegavia
2016/10/10 全球购物
伦敦哈德森鞋:Hudson Shoes
2018/02/06 全球购物
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
运动员获奖感言
2014/08/15 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
教师工作表现评语
2014/12/31 职场文书
冰峪沟导游词
2015/02/09 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
小学课改工作总结
2015/08/13 职场文书
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis