在日常应用开发过程中,经常遇到后端 api 接口输出的数据格式与前端组件要求的数据格式不一样的情况,我们可以通过数据转换来解决这个问题,详解下面的代码 :
示例代码 :
<template>
<view class="gui-padding">
<view class="gui-margin-top">
<picker
@change="bindPickerChange"
:value="pickerIndex"
:range="pickerArray">
<view>{{pickerArray[pickerIndex]}}</view>
</picker>
</view>
</view>
</template>
<script>
export default {
data() {
return {
pickerArray : [],
pickerIndex : 0,
apiData : []
}
},
onReady: function (options) {
//模拟api 请求
setTimeout(()=>{
// 假设 api 返回的数据格式如下:
var apiData = [{id:0, name:"全部"}, {id:1, name:"男"}, {id:2, name:"女"}];
this.apiData = apiData;
// 而 picker 组件需要的格式为 ['全部', '男', '女']
// 解决方案 : 遍历 api 数据并转换为 picker 要求的形式
var pickerData = [];
for(let i = 0; i < apiData.length; i++){
pickerData.push(apiData[i].name);
}
this.pickerArray = pickerData;
}, 300);
},
methods: {
bindPickerChange : function (e) {
console.log(e);
// 选择索引
this.pickerIndex = e.detail.value;
// 对应选择的 api 数据
console.log(this.apiData[this.pickerIndex]);
// api 数据名称, 获取id 则 .id 即可
console.log(this.apiData[this.pickerIndex].name);
// 对应选择的转换后的 picker 数据
console.log(this.pickerArray[this.pickerIndex]);
}
}
}
</script>
<style>
</style>