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 相关文章推荐
Auntion-TableSort国人写的一个javascript表格排序的东西
Nov 12 Javascript
关于flash遮盖div浮动层的解决方法
Jul 17 Javascript
javascript打印输出json实例
Nov 11 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 Javascript
JS获得浏览器版本和操作系统版本的例子
May 13 Javascript
jQuery实现标题有打字效果的焦点图代码
Nov 16 Javascript
JavaScript html5 canvas绘制时钟效果
Mar 01 Javascript
JavaScript中undefined和null的区别
May 03 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
Oct 23 Javascript
JS抛物线动画实例制作
Feb 24 Javascript
JavaScript常用工具函数库汇总
Sep 17 Javascript
springboot+vue实现文件上传下载
Nov 17 Vue.js
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
ajax缓存问题解决途径
2006/12/06 PHP
php简单实现快速排序的方法
2015/04/04 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
javascript 短路法代码精简
2009/08/20 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
浅谈js中的闭包
2015/03/16 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
JavaScript常用内置对象用法分析
2019/07/09 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
django框架CSRF防护原理与用法分析
2019/07/22 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
Python箱型图处理离群点的例子
2019/12/09 Python
python分布式计算dispy的使用详解
2019/12/22 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
PyQt实现计数器的方法示例
2021/01/18 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
美国汽车性能部件和赛车零件网站:Vivid Racing
2018/03/27 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
护士求职推荐信范文
2013/11/23 职场文书
教师网络培训感言
2014/03/09 职场文书
建议书怎么写
2014/03/12 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
解析redis hash应用场景和常用命令
2021/08/04 Redis
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS