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 相关文章推荐
Extjs中DisplayField的日期或者数字格式化扩展
Sep 03 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
May 10 Javascript
javascript的console.log()用法小结
May 31 Javascript
JQuery设置和去除disabled属性的5种方法总结
May 16 Javascript
JS使用单链表统计英语单词出现次数
Jun 16 Javascript
关于微信中a链接无法跳转问题
Aug 02 Javascript
谈谈JavaScript的New关键字
Aug 26 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
Sep 17 Javascript
Vue实现自带的过滤器实例
Mar 09 Javascript
JS中常用的消息框总结
Feb 24 Javascript
Angular ElementRef简介及其使用
Oct 01 Javascript
微信小程序学习总结(五)常见问题实例小结
Jun 04 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
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
[01:35]辉夜杯战队访谈宣传片—iG.V
2015/12/25 DOTA
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
python实现俄罗斯方块游戏
2020/03/25 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
python 比较字典value的最大值的几种方法
2020/04/17 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
Python用来做Web开发的优势有哪些
2020/08/05 Python
利用python绘制正态分布曲线
2021/01/04 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
PHP经典面试题
2016/09/03 面试题
儿科护士自我鉴定
2013/10/14 职场文书
应届毕业生个人自荐信范文
2013/11/30 职场文书
法人代表授权委托书
2014/04/08 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
java如何实现socket连接方法封装
2021/09/25 Java/Android
Python简易开发之制作计算器
2022/04/28 Python
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技