uni-app 中的 picker 元件基于背景對象數組資料格式的使用
- view:
- data:
- 普通數組:
- 總結
- 結語
view:
<view class="uni-list">
<view class="uni-list-cell">
<view class="uni-list-cell-db">
<picker mode="selector" v-model="pSId" @change="bindPickerChange" :value="index"
:range="pSNames" range-key="pSName">
<view class="flex picker">
<view class='flex-item margin-lg'>我選擇:{{pSNames[index].pSName}}
</view>
</view>
</picker>
</view>
</view>
</view>
data:
<script>
export default {
data() {
return {
pSId: '',
pSNames: [{
"pSId": "",
"pSName": ""
}],
index: 0,
pSName: ""
};
},
methods: {
bindPickerChange(e) {
console.log(e)
this.index = e.detail.value
this.pSId = this.pSNames[e.detail.value].pSId
console.log(this.pSId)
},
}
PS:
普通數組:
<view class="uni-list-cell-db">
<picker @change="bindPickerChange" :value="index" :range="array">
<view class="uni-input">{{array[index]}}</view>
</picker>
</view>
export default {
data() {
return {
array: ['中國', '俄國'],
index: 0,
}
},
methods: {
bindPickerChange: function(e) {
console.log('picker發送選擇改變,攜帶值為', e.target.value)
this.index = e.target.value
},
}
}
重點分析:
-
指定對象數組range='{{objectArray}}'
-
指定 range-key,即指定使用range-key="{{'name'}}"
中的objectArray
屬性來作為選擇器中顯示的内容,這裡需要注意取出的屬性外加了‘’号,即‘name’,引号不可少name
-
,value='{{objectArray[rangekey].value}}'
是js中定義的對象數組的下标,rangekey
取出的是改下标的對象,如objectArray[rangekey]
,而{id: 1,name: '蘋果',price: 18.6}
中objectArray[rangekey].value
值表示的是value
中指定的屬性,這裡是range-key
,即蘋果。name
- 最終展示選中的内容
,仍然是通過數組的下标擷取,隻是這裡取出的是對象,{{objectArray[rangekey].price}} 元
取出對象中的價格。.price