| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | <template>	<picker @change="bindPickerChange" @columnchange="columnchange" :range="array" range-key="name" :value="value" mode="multiSelector">		<slot></slot>	</picker></template><script>	import AllAddress from './data.js'	let selectVal = ['','','']		export default {		data() {			return{				value: [0,0,0],				array: [],				index: 0			}		},		created() {			this.initSelect()		},		methods:{			// 初始化地址选项			initSelect() {				this.updateSourceDate() // 更新源数据				.updateAddressDate() // 更新结果数据				//.$forceUpdate()  // 触发双向绑定			},			// 地址控件改变控件			columnchange(d) {				this.updateSelectIndex(d.detail.column, d.detail.value) // 更新选择索引				.updateSourceDate() // 更新源数据				.updateAddressDate() // 更新结果数据				//.$forceUpdate()  // 触发双向绑定			},						/**			 * 更新源数据			 * */			updateSourceDate() {				this.array = []				this.array[0] = AllAddress.map(obj => {					return {						name: obj.name					}				})				this.array[1] = AllAddress[this.value[0]].city.map(obj => {					return {						name: obj.name					}				})				this.array[2] = AllAddress[this.value[0]].city[this.value[1]].area.map(obj => { 					return {						name: obj					}				})				return this			},						/**			 * 更新索引			 * */			updateSelectIndex(column, value){				let arr = JSON.parse(JSON.stringify(this.value)) 				arr[column] = value				if(column === 0 ) {					arr[1] = 0					arr[2] = 0				}				if(column === 1 ) {					arr[2] = 0				}				this.value = arr				return this			},						/**			 * 更新结果数据 			 * */			updateAddressDate() {				selectVal[0] = this.array[0][this.value[0]].name				selectVal[1] = this.array[1][this.value[1]].name 				selectVal[2] = this.array[2][this.value[2]].name 				return this			},						/**			 * 点击确定			 * */			bindPickerChange(e) {				this.$emit('change', {					index: this.value,					data: selectVal				})				return this			}					}	}</script><style></style>
 |