初学者求问。
这个微信小程序是家长可以绑定多个学生,想实现切换学生来展示不同的内容,后端的逻辑是接受这个家长的token然后返回绑定的所有的学生信息,返回的信息如下。其中有一个值是'active' 是ture时表示显示这个学生的信息 其他学生为false表示不显示。
{
"status": "success",
"data": [
{
"_id": "6387f29f26c42533f36254a6",
"family_id": "6387396a26c42533f36254a5",
"student_id": "60a4c91fc2ab5d64f11204b0",
"active": true,
"create_time": "2022-12-01 08:17:35",
"name": "赵小云",
"clazz": "2021 二班"
}
]
}
我前端是调用picker来实现切换,代码如下,现在问题是 我切换界面再返回这个界面时,picker会显示列表中的第一个学生名字,而不是当前展示信息的学生名字。我应该怎样做能根据后端返回的'active' 来让picker显示正确的名字
<picker mode="selector" disabled="{{down}}" bindchange="bindPickerChange" value="{{index}}" range="{{showmain}}" range-key="name">
<view class="name">
<view>
{{showmain[index].name}}
view>
<view wx:if="{{down}}">
view>
<view wx:else="">
<image class="down" src="../../images/down_unclick.png" mode="widthFix" />
view>
view>
picker>
js代码如下
onLoad(options) {
var that = this
// 请求绑定学生账号信息
wx.request({
url: getApp().globalData.server + '/api/v1/client/get/binds',
data: {},
method: "GET",
header: {
token: getApp().globalData.token,
'content-type': 'application/json'
},
success(res) {
if (res.data.status != 'success') {
wx.showModal({
title: '温馨提示',
showCancel: false,
content: res.data.msg,
success: function (res) {}
})
} else if (res.data.status == 'success') {
that.setData({
showmain: res.data.data
})
for (let i = that.data.index; i < res.data.data.length; i++) {
that.setData({
["name[" + i + "]"]: res.data.data[i].name,
})
}
//存储学生数据到全局
getApp().globalData.showStudent = res.data.data
//根据是否绑定学生显示不同内容
if (that.data.name == "" || that.data.name == 'undefined') {
that.setData({
login: false
});
} else {
that.setData({
login: true
})
}
//判断绑定学生数量
if (that.data.name.length > 1) {
that.setData({
down: false
});
} else {
that.setData({
down: true
})
}
} else {
wx.showModal({
title: '温馨提示',
showCancel: false,
content: '网络错误,重新进入小程序',
success: function (res) {}
})
}
}
})
}
现在的效果如图,应该上方显示的学生名字跟下面的名字一样才对
picker中绑定的 index 就是控制picker默认选中哪一个的。 从你的代码中,我没有看到对 index 赋值,
你想要哪一个被选中显示,就要把这个index设置为 picker中绑定的数据的下标。