uniapp 地区选择

pickerAddress组件

<template>
	<picker @change="bindPickerChange" @columnchange="columnchange" :range="array" range-key="name" :value="value" mode="multiSelector" style="display:flex;justify-content: space-between;">
		<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]].cityList.map(obj => {
					return {
						name: obj.name
					}
				})
				this.array[2] = AllAddress[this.value[0]].cityList[this.value[1]].areaList.map(obj => { 
					return {
						name: obj.name
					}
				})
				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,
					array:this.array
				})
				return this
			}
			
		}
	}
</script>

data.js 私信领取,+V领取:Tel17611072990

引用组件

<template>
    <view><pickerAddress @change="change">{{value}}</pickerAddress></view>
</template>
<script>
import pickerAddress from 'pickerAddress'
export default {
    components:{pickerAddress},
    data() {
        return {
            value: "请选择地区"
        }
    },
    methods: {
        change(data) {
            this.value = data.data.join('')
        }
    }
}
</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Uniapp Picker时间选择器是一种可以在Uniapp平台上使用的时间选择器组件,可以方便地让用户选择日期和时间。它可以根据需要进行定制,包括选择器的样式、显示的日期和时间格式等。同时,它还支持多种语言,可以满足不同地区用户的需求。 ### 回答2: UniApp picker时间选择器是UniApp提供的一种用于选择时间的组件。它可以在移动端网页、微信小程序、支付宝小程序等环境下使用,提供了简洁易用的时间选择交互界面,方便用户快速选择需要的时间。 使用UniApp picker时间选择器,可以轻松地实现时间选择器的功能,支持选择年、月、日、小时、分钟等时间细节,还可以根据需要设置最小时间和最大时间的范围,以及选择器的显示方式,例如日期时间选择器、时间选择器等。 UniApp picker时间选择器的使用非常简单,只需在页面中引入组件,在需要显示时间选择器的地方添加一个按钮或输入框,触发时间选择器的显示即可。在用户选择时间后,可以通过组件提供的事件接口获取用户选择的时间值,然后将该值传递给后台系统或进行其他处理。 总之,UniApp picker时间选择器是一款非常实用的组件,不仅方便用户在移动端进行时间选择,同时也为开发者提供了简单易用的时间选择器开发工具,可以大大简化开发难度和提高开发效率。 ### 回答3: Uniapp picker时间选择器是Uniapp提供的一种时间选择器组件,可以方便地实现时间的选择功能。该组件支持年、月、日、时、分、秒等多种时间格式的选择,还可以在选择器中自定义选项内容以及相应的显示格式。 使用Uniapp picker时间选择器非常简单。首先在页面中引入该组件,然后定义一个时间类型的变量作为选择器的初始值。在模板中,使用picker组件并设置属性mode为time,即可实现一个简单的时间选择器。此外,还可以利用slot来自定义时间选择器的界面风格和布局。 Uniapp picker时间选择器具有很好的灵活性和可扩展性。它可以方便地与其他组件和插件进行结合使用,实现更加复杂的时间选择逻辑和交互效果。同时,该组件使用简单,易于上手,不需要过多的编码经验和技巧,即可轻松实现时间选择功能。 总的来说,Uniapp picker时间选择器是一款功能强大、使用方便的时间选择组件,为开发者提供了一种快速、简单地实现时间选择功能的方式。无论是在移动端还是Web端开发中,Uniapp picker时间选择器都是一款值得推荐的组件库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值