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 grid取到数据而不显示的解决
Dec 29 Javascript
JS中把字符转成ASCII值的函数示例代码
Nov 21 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
Feb 08 Javascript
js中各种类型的变量在if条件中是true还是false
Jul 16 Javascript
如何判断微信内置浏览器(通过User Agent实现)
Sep 01 Javascript
Javascript验证方法大全
Sep 21 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
Dec 31 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
Sep 20 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
Sep 18 Javascript
详解Vue CLI 3.0脚手架如何mock数据
Nov 23 Javascript
微信小程序实现简易table表格
Jun 19 Javascript
详解Vuex下Store的模块化拆分实践
Jul 31 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编程效率 引入缓存机制提升性能
2010/02/15 PHP
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
2009/05/21 Javascript
JavaScript 设计模式学习 Factory
2009/07/29 Javascript
浅谈javascript的原型继承
2012/07/25 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
详解如何解决canvas图片getImageData,toDataURL跨域问题
2018/09/17 HTML / CSS
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
函授本科毕业自我鉴定
2013/10/09 职场文书
大学生就业自荐信
2013/10/26 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
代办社保委托书范文
2014/10/06 职场文书
家属答谢词
2015/01/05 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
麦田里的守望者读书笔记
2015/06/30 职场文书
Python中Cookies导出某站用户数据的方法
2021/05/17 Python
Java spring定时任务详解
2021/10/05 Java/Android