<template> <view> <picker @change="PickerChange" :value="index" :disabled="disabled" :range-value="rangeValue" :range-key="rangeKey" :range="range"> <view class=" picker action"> <view class=" "> {{label}}▾ </view> </view> </picker> </view> </template> <script> export default { data() { return { index: -1, label: '请选择' }; }, props: { value: String, empty: { type: String, default: '' }, rangeKey: { type: String, default: 'label' }, rangeValue: { type: String, default: 'value' }, range: { type: Array, default: [] }, disabled: { type: Boolean, default: false }, onChangeNew: { type: Function, default: null, } }, mounted() { if (this.empty) { this.label = this.empty } }, watch:{ value: { handler (val) { if(val) { let options = this.range.filter((option)=>{ return option.value === val }) // if(options.length === 0){ // this.label = '请选择' // } else { this.label = options[0][this.rangeKey] //} } }, immediate: true, deep: false } }, methods:{ PickerChange(e) { this.index = e.detail.value; //if(this.index !== -1){ this.label = this.range[this.index][this.rangeKey] this.$emit('input', this.range[this.index][this.rangeValue]) // }else{ // this.label = '请选择' // this.$emit('input', null) // } if (this.onChangeNew) { this.onChangeNew() } } } } </script> <style> </style>