radio.uvue 6.6 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
<script>
	type ItemType = {
		value : string
		name : string
	}
	export default {
		data() {
			return {
				items: [
					{
						value: 'CHN',
						name: '中国',
					},
					{
						value: 'USA',
						name: '美国',
					},

					{
						value: 'BRA',
						name: '巴西',
					},
					{
						value: 'JPN',
						name: '日本',
					},
					{
						value: 'ENG',
						name: '英国',
					},
					{
						value: 'FRA',
						name: '法国',
					},
				] as ItemType[],
				current: 0,

				value: '',
				text: '未选中',
				wrapText: 'uni-app x,终极跨平台方案\nuts,大一统语言',
				disabled: true,
				checked: true,
				color: '#007aff',
				// 组件属性 autotest
				checked_boolean: false,
				disabled_boolean: false,
				color_input: "#007AFF",
				backgroundColor_input: "#ffffff",
				borderColor_input: "#d1d1d1",
				activeBackgroundColor_input: "#007AFF",
				activeBorderColor_input: "",
				iconColor_input: "#ffffff"
			}
		},
		methods: {
			radioChange(e : RadioGroupChangeEvent) {
				const selected = this.items.find((item) : boolean => {
					return item.value == e.detail.value
				})
				uni.showToast({
					icon: 'none',
					title: '当前选中:' + selected?.name,
				})
			},
			testChange(e : RadioGroupChangeEvent) {
				this.value = e.detail.value
			},
			radio_click() { console.log("组件被点击时触发") },
			radio_touchstart() { console.log("手指触摸动作开始") },
			radio_touchmove() { console.log("手指触摸后移动") },
			radio_touchcancel() { console.log("手指触摸动作被打断,如来电提醒,弹窗") },
			radio_touchend() { console.log("手指触摸动作结束") },
			radio_tap() { console.log("手指触摸后马上离开") },
			radio_longpress() { console.log("如果一个组件被绑定了 longpress 事件,那么当用户长按这个组件时,该事件将会被触发。") },
			change_checked_boolean(checked : boolean) { this.checked_boolean = checked },
			change_disabled_boolean(checked : boolean) { this.disabled_boolean = checked },
			confirm_color_input(value : string) { this.color_input = value },
			confirm_backgroundColor_input(value : string) { this.backgroundColor_input = value },
			confirm_borderColor_input(value : string) { this.borderColor_input = value },
			confirm_activeBackgroundColor_input(value : string) { this.activeBackgroundColor_input = value },
			confirm_activeBorderColor_input(value : string) { this.activeBorderColor_input = value },
			confirm_iconColor_input(value : string) { this.iconColor_input = value }
		}
	}
</script>

Y
init  
yurj26 已提交
87
<template>
88 89 90 91 92 93 94 95 96
	<view class="main">
		<radio :disabled="disabled_boolean" :checked="checked_boolean" :color="color_input"
			:backgroundColor="backgroundColor_input" :borderColor="borderColor_input"
			:activeBackgroundColor="activeBackgroundColor_input" :activeBorderColor="activeBorderColor_input"
			:iconColor="iconColor_input" @click="radio_click" @touchstart="radio_touchstart" @touchmove="radio_touchmove"
			@touchcancel="radio_touchcancel" @touchend="radio_touchend" @tap="radio_tap" @longpress="radio_longpress">
			<text>uni-app-x</text>
		</radio>
	</view>
Y
yurj26 已提交
97

98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
	<!-- #ifdef APP -->
	<scroll-view style="flex:1">
		<!-- #endif -->
		<view class="content nvue">
			<page-head title="组件属性"></page-head>
			<boolean-data :defaultValue="false" title="<radio/> 当前是否选中" @change="change_checked_boolean"></boolean-data>
			<boolean-data :defaultValue="false" title="是否禁用" @change="change_disabled_boolean"></boolean-data>
			<input-data defaultValue="#007AFF" title="radio的颜色" type="text" @confirm="confirm_color_input"></input-data>
			<input-data defaultValue="#ffffff" title="radio默认的背景颜色" type="text"
				@confirm="confirm_backgroundColor_input"></input-data>
			<input-data defaultValue="#d1d1d1" title="radio默认的边框颜色" type="text"
				@confirm="confirm_borderColor_input"></input-data>
			<input-data defaultValue="#007AFF" title="radio选中时的背景颜色,优先级大于color属性" type="text"
				@confirm="confirm_activeBackgroundColor_input"></input-data>
			<input-data defaultValue="" title="radio选中时的边框颜色" type="text"
				@confirm="confirm_activeBorderColor_input"></input-data>
			<input-data defaultValue="#ffffff" title="radio的图标颜色" type="text" @confirm="confirm_iconColor_input"></input-data>
		</view>
Y
yurj26 已提交
116

117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
		<view>
			<page-head title="默认及使用"></page-head>
			<view class="uni-padding-wrap">
				<view class="uni-title uni-common-mt">
					<text class="uni-title-text"> 默认样式 </text>
				</view>
				<radio-group class="uni-flex uni-row radio-group" @change="testChange" style="flex-wrap: wrap">
					<radio value="r" :checked="checked" :color="color" style="margin-right: 30rpx" class="radio r">选中
					</radio>
					<radio value="r1" style="margin-right: 30rpx" class="radio r1">{{
		        text
		      }}</radio>
					<radio value="r2" :disabled="disabled" class="radio r2">禁用</radio>
					<radio value="r3" class="radio r3" style="margin-top: 20rpx">{{
		        wrapText
		      }}</radio>
				</radio-group>
			</view>
Y
yurj26 已提交
135

136 137 138 139 140 141 142 143 144 145 146
			<view class="uni-padding-wrap">
				<view class="uni-title uni-common-mt">
					<text class="uni-title-text"> 不同颜色和尺寸的radio </text>
				</view>
				<radio-group class="uni-flex uni-row radio-group">
					<radio value="r1" :checked="true" color="#FFCC33" style="transform: scale(0.7); margin-right: 30rpx"
						class="radio">选中
					</radio>
					<radio value="r2" color="#FFCC33" style="transform: scale(0.7)" class="radio">未选中</radio>
				</radio-group>
			</view>
DCloud-WZF's avatar
DCloud-WZF 已提交
147

148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
			<view class="uni-padding-wrap">
				<view class="uni-title uni-common-mt">
					<text class="uni-title-text"> 推荐展示样式 </text>
				</view>
			</view>
			<view class="uni-list uni-common-pl">
				<radio-group @change="radioChange" class="radio-group">
					<radio class="uni-list-cell uni-list-cell-pd radio" v-for="(item, index) in items" :key="item.value"
						:class="index < items.length - 1 ? 'uni-list-cell-line' : ''" :value="item.value"
						:checked="index === current">
						{{ item.name }}
					</radio>
				</radio-group>
			</view>
		</view>
		<!-- #ifdef APP -->
	</scroll-view>
	<!-- #endif -->
</template>
Y
init  
yurj26 已提交
167 168

<style>
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
	.main {
		max-height: 500rpx;
		padding: 10rpx 0;
		border-bottom: 1px solid rgba(0, 0, 0, .06);
		flex-direction: row;
		justify-content: center;
	}

	.main .list-item {
		width: 100%;
		height: 200rpx;
		border: 1px solid #666;
	}

	.uni-list-cell {
		justify-content: flex-start;
	}
</style>