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 相关文章推荐
JS date对象的减法处理实现代码
Dec 28 Javascript
js select option对象小结
Dec 20 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
Dec 29 Javascript
node.js插件nodeclipse安装图文教程
Oct 19 Javascript
jQuery获取this当前对象子元素对象的方法
Nov 29 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
Jan 16 Javascript
@ResponseBody 和 @RequestBody 注解的区别
Mar 08 Javascript
BootStrap表单时间选择器详解
May 09 Javascript
jQuery实现的简单在线计算器功能
May 11 jQuery
解决webpack打包速度慢的解决办法汇总
Jul 06 Javascript
electron-vue开发环境内存泄漏问题汇总
Oct 10 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
Jan 07 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
解析PHP 使用curl提交json格式数据
2013/06/29 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
js的.innerHTML = &quot;&quot;IE9下显示有错误的解决方法
2013/09/16 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
python实现石头剪刀布程序
2021/01/20 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
丹麦优惠购物网站:PLUSSHOP
2019/03/24 全球购物
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
简易离婚协议书范本
2014/10/24 职场文书
交通事故和解协议书
2015/01/27 职场文书
教师个人自我评价
2015/03/04 职场文书
党员理论学习心得体会
2016/01/21 职场文书