微信小程序实现的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 相关文章推荐
jquery validation插件表单验证的一个例子
Mar 03 Javascript
JavaScript错误处理
Feb 03 Javascript
JavaScript中的lastIndexOf()方法使用详解
Jun 06 Javascript
Bootstrap基础学习
Jun 16 Javascript
Angularjs 设置全局变量的方法总结
Oct 20 Javascript
js实现打地鼠小游戏
Feb 13 Javascript
超简单的Vue.js环境搭建教程
Mar 17 Javascript
vue自定义指令实现方法详解
Feb 11 Javascript
es6 filter() 数组过滤方法总结
Apr 03 Javascript
通过实践编写优雅的JavaScript代码
May 30 Javascript
ES5新增数组的实现方法
May 12 Javascript
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
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
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
JS使用队列对数组排列,基数排序算法示例
2019/03/02 Javascript
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
Python中super的用法实例
2015/05/28 Python
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
Python切片工具pillow用法示例
2018/03/30 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
python 构造三维全零数组的方法
2018/11/12 Python
python的concat等多种用法详解
2018/11/28 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
softmax及python实现过程解析
2019/09/30 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
打架检讨书100字
2014/01/08 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
自考毕业自我鉴定
2014/03/18 职场文书
企业口号大全
2014/06/12 职场文书
就业意向书
2014/07/29 职场文书
公司股东出资证明书
2014/11/01 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
会计简历自我评价
2015/03/10 职场文书
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python