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 opener的使用详解
Jan 11 Javascript
购物车选中得到价格实现示例
Jan 26 Javascript
jQuery焦点图切换简易插件制作过程全纪录
Aug 27 Javascript
js中style.display=&quot;&quot;无效的解决方法
Oct 30 Javascript
easyui validatebox验证
Apr 29 Javascript
最丑的时钟效果!js canvas时钟制作方法
Aug 15 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
Apr 10 Javascript
浅析Vue项目中使用keep-Alive步骤
Jul 27 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
Apr 23 Javascript
Node.js之删除文件夹(含递归删除)代码实例
Sep 09 Javascript
Ant design vue中的联动选择取消操作
Oct 31 Javascript
JavaScript高级程序设计之变量与作用域
Nov 17 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/03/20 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
解决laravel session失效的问题
2019/10/14 PHP
JavaScript游戏之是男人就下100层代码打包
2010/11/08 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
Python工厂函数用法实例分析
2018/05/14 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
django的settings中设置中文支持的实现
2019/04/28 Python
如何更优雅地写python代码
2019/07/02 Python
python实现在线翻译功能
2020/03/03 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
2021/02/20 Python
建筑工程专业毕业生自荐信
2013/10/19 职场文书
英语专业个人求职信范文
2014/02/01 职场文书
2014全国两会心得体会
2014/03/17 职场文书
八月迷情观后感
2015/06/11 职场文书
葬礼主持词
2015/07/02 职场文书