微信小程序实现的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 相关文章推荐
用JS实现的一个include函数
Jul 21 Javascript
ASP SQL防注入的方法
Dec 25 Javascript
jquery ajax 同步异步的执行示例代码
Jun 23 Javascript
js constructor的实际作用分析
Nov 15 Javascript
js正文内容高亮效果的实现方法
Jun 30 Javascript
js变量、作用域及内存详解
Sep 23 Javascript
Backbone.js的Hello World程序实例
Jun 19 Javascript
详解Vue-Cli 异步加载数据的一些注意点
Aug 12 Javascript
浅谈vue引入css,less遇到的坑和解决方法
Jan 20 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
Mar 11 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
May 07 Javascript
JavaScript中的类型检查
Feb 03 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
生成缩略图
2006/10/09 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
php 可变函数使用小结
2018/06/12 PHP
php+websocket 实现的聊天室功能详解
2020/05/27 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
python中base64加密解密方法实例分析
2015/05/16 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
python实现linux下抓包并存库功能
2018/07/18 Python
python程序文件扩展名知识点详解
2020/02/27 Python
canvas实现有递增动画的环形进度条的实现方法
2019/07/10 HTML / CSS
家长对小学生的评语
2014/01/28 职场文书
《问银河》教学反思
2014/02/19 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
英文邀请函
2015/02/02 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js