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 相关文章推荐
JavaScript 对话框和状态栏使用说明
Oct 25 Javascript
javascript实现颜色渐变的方法
Oct 30 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
Aug 24 Javascript
jQuery入门之层次选择器实例简析
Dec 11 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
Dec 08 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
May 27 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
react实现菜单权限控制的方法
Dec 11 Javascript
node静态服务器实现静态读取文件或文件夹
Dec 03 Javascript
利用React高阶组件实现一个面包屑导航的示例
Aug 23 Javascript
JavaScript封装单向链表的示例代码
Sep 17 Javascript
vue.js封装switch开关组件的操作
Oct 26 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设计模式之结构模式的深入解析
2013/06/13 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
JavaScript动态添加列的方法
2015/03/25 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
Python异常处理总结
2014/08/15 Python
详解Python迭代和迭代器
2016/03/28 Python
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
详解Python requests 超时和重试的方法
2018/12/18 Python
python实现淘宝秒杀脚本
2020/06/23 Python
Python子类继承父类构造函数详解
2019/02/19 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
python序列类型种类详解
2020/02/26 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
生物化工工艺专业应届生求职信
2013/10/08 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
生死抉择观后感
2015/06/09 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
学生病假条怎么写
2015/08/17 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
用CSS3画一个爱心
2021/04/27 HTML / CSS