0
点赞
收藏
分享

微信扫一扫

WX小程序 vant UI 调用接口实现二级级联

WX小程序 vant UI 调用接口实现二级级联

思路: 当点击父节点的时候将传递过来的json数组,抽离出一个存放id的数组和一个存放值的数组,
将值的数组赋值给组件调用。当点击选择器的确认按钮 e.detail可以获取值的index,这个值的index刚好映射到id数组中可以获取id。然后再用这个id来发送ajax,请求将数据赋值给这个请求。
在这里插入图片描述
JS

Page({
data: {
show: false, //底层的弹框
columns: [],
ids: [],
index:'', //选中的数组下标
title:'',
status:'', //0 :学院, 1实验室
},

onChange(event) {
const { picker, value, index } = event.detail;
},

showAcademicDialog(){
this.showAcademicData()
this.setData({
show: true,
title: '学院',
status: 0
})
},
showLabDialog(){
this.showLabData()
this.setData({
show: true,
title: '实验室',
status: 1
})
},
showLabData(){
let that = this
wx.request({
url: 'http://127.0.0.1/instrument/common/getLaboraries.php',
data:{
id: that.data.ids[that.data.index]
},
success(res){
if (res.data.code == 200) {
let arr = res.data.data
let values = []
for(let i = 0; i < arr.length; i++) {
values = values.concat(arr[i].value)
}
that.setData({
columns: values,
})
}
}
})
},
showAcademicData(){
let that = this
wx.request({
url: 'http://127.0.0.1/instrument/common/getAcademies.php',
data:{},
success(res){
if (res.data.code == 200) {
let arr = res.data.data
let values = []
let ids = []
for(let i = 0; i < arr.length; i++) {
values = values.concat(arr[i].value)
ids = ids.concat(arr[i].id)
}
that.setData({
columns: values,
ids: ids
})
}
}
})
},
confirmDialog(event){
const { picker, value, index } = event.detail;
if (this.data.status == 0) {
this.setData({
index: index,
show: false,
academic: value
})
}
if(this.data.status == 1){
this.setData({
show: false,
lab: value
})
}
},
cancelDialog(){},
onClose(){
this.setData({
show: false
})
},
onLoad(options){

}
});

json(引入的组件)

{
"usingComponents": {
"van-picker": "@vant/weapp/picker/index",
"van-cell": "@vant/weapp/cell/index",
"van-cell-group": "@vant/weapp/cell-group/index",
"van-popup": "@vant/weapp/popup/index"
}
}

wxml

<van-cell title="学院" value="{{ academic }}" is-link bind:click="showAcademicDialog"></van-cell>
<van-cell title="实验室" value="{{ lab }}" is-link bind:click="showLabDialog"></van-cell>

<!-- 弹框 -->
<van-popup show="{{ show }}" bind:close="onClose" position="bottom">
  <van-picker columns="{{ columns }}" 
    show-toolbar="true"
    title="{{ title }}"
    bind:confirm="confirmDialog"
    bind:cancel="cancelDialog"/>
</van-popup>
举报

相关推荐

0 条评论