微信小程序实现的picker多级联动功能示例


Posted in Javascript onMay 23, 2019

本文实例讲述了微信小程序实现的picker多级联动功能。分享给大家供大家参考,具体如下:

wxml部分:

<picker
 mode="multiSelector"
 bindchange="bindjobcatchange"
 bindcolumnchange="bingjobcatcolumnchange"
 value="{{multiIndex}}"
 range="{{job_cat_list}}"
  range-key="{{'cat_name'}}"
>
 <view class="picker">
  {{fenlei_title}}
 </view>
</picker>

js部分:

Page({
 data: {
  server_url: app.globalData.URL,
  fenlei_title:'分类',
  job_cat_list:[],
  multiIndex: [0,0,0],
  filter:{
   keywords:'',
   job_cat_id:''
  }
 },
 onLoad: function () {
  this.jobcat();
 },
 jobcat: function() {
  var that = this;
  wx.request({
   url: app.globalData.URL + "/xxx/eeee",
   data: {
    x: '',
    y: ''
   },
   header: {
    'content-type': 'application/json' // 默认值
   },
   success: function (res) {
    var data = res.data.data;
    that.setData({
     job_cat_list: [data, data[0]['children'], data[0]['children'][0]['children']]
    });
   }
  });
 },
 bindjobcatchange: function(e){
  this.setData({multiIndex:e.detail.value})
 },
 bingjobcatcolumnchange: function(e){
  var index = this.data.multiIndex;
  const data = {
   job_cat_list: this.data.job_cat_list,
   multiIndex: this.data.multiIndex
  }
  this.data.multiIndex[e.detail.column] = e.detail.value;
  if (e.detail.column==0){
    data.job_cat_list[1] = this.data.job_cat_list[0][index[0]]['children'];
    data.job_cat_list[2] = data.job_cat_list[1][index[1]]['children'];
  }else if(e.detail.column===1){
    data.job_cat_list[2] = data.job_cat_list[1][index[1]]['children'];
    this.data.filter.job_cat_id = data.job_cat_list[2][index[2]]['cat_name'];
  }else if(e.detail.column===2){
   this.data.filter.job_cat_id=data.job_cat_list[2][e.detail.value]['cat_name'];
  }
  this.setData(data)
 }
})

php后台部分:

public function jobcate(){
    $zp_job_catModel = new ZpJobCat();
    $job_cat = $zp_job_catModel->getcateAll();
    $i=0;
    $return_data = [];
    foreach ($job_cat as $key=>$val){
      $return_data[$i] = $val;
      $return_data[$i]['children'] = [];
      if (!empty($val['children'])){
        $c=0;
        foreach ($val['children'] as $k=>$v){
          $return_data[$i]['children'][$c] = $v;
          if (!empty($v['children'])){
            $return_data[$i]['children'][$c]['children'] = [];
            $m=0;
            foreach ($v['children'] as $val2){
              $return_data[$i]['children'][$c]['children'][$m] = $val2;
              $m++;
            }
          }
          $c++;
        }
      }
      $i++;
    }
    $this->_success($return_data);
}

另外,本站在线工具小程序上的天气查询、车牌号归属地查询以及阴历阳历转换等工具就采用了联动查询功能,感兴趣的朋友可以扫描如下小程序码查看:

微信小程序实现的picker多级联动功能示例

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
理解Javascript_14_函数形式参数与arguments
Oct 20 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
Feb 04 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
Apr 09 Javascript
浅谈JavaScript Date日期和时间对象
Dec 29 Javascript
jQuery中$.click()无效问题分析
Jan 29 Javascript
javascript异步处理工作机制详解
Apr 13 Javascript
JavaScript中rem布局在react中的应用
Dec 09 Javascript
jQuery下拉框的简单应用
Jun 24 Javascript
浅谈Node.js 沙箱环境
May 15 Javascript
JavaScript数组特性与实践应用深入详解
Dec 30 Javascript
vue组件开发之tab切换组件使用详解
Aug 21 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
Sep 18 Javascript
js console.log打印对象时属性缺失的解决方法
May 23 #Javascript
Node.js+ELK日志规范的实现
May 23 #Javascript
jquery+php后台实现省市区联动功能示例
May 23 #jQuery
js尾调用优化的实现
May 23 #Javascript
浅谈redux, koa, express 中间件实现对比解析
May 23 #Javascript
Express结合Webpack的全栈自动刷新
May 23 #Javascript
ajax跨域访问遇到的问题及解决方案
May 23 #Javascript
You might like
东方红 - 来复式再生机的修复
2021/03/02 无线电
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
基于Jquery的温度计动画效果
2010/06/18 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
python脚本调用iftop 统计业务应用流量的思路详解
2019/10/11 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
总经理岗位职责
2013/11/09 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python