123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- <template>
- <view class="u-demo">
- <view class="u-demo-wrap">
- <view class="u-demo-title">演示效果</view>
- <view class="u-demo-area">
- <view class="">
- <u-radio-group :shape="shape" :size="size" :width="width" :wrap="wrap" v-model="value" @change="radioGroupChange" :activeColor="activeColor">
- <u-radio @change="radioChange" v-for="(item, index) in list" :disabled="item.disabled"
- :key="index" :name="item.name"
- >{{item.name}}</u-radio>
- </u-radio-group>
- </view>
- <view class="u-demo-result-line">
- {{value ? `选中了"${result}"` : '请选择'}}
- </view>
- </view>
- </view>
- <view class="u-config-wrap">
- <view class="u-config-title u-border-bottom">
- 参数配置
- </view>
- <view class="u-config-item">
- <view class="u-item-title">形状</view>
- <u-subsection current="1" :list="['方形', '圆形']" @change="shapeChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">整体大小(单位rpx)</view>
- <u-subsection current="1" :list="['30', '40', '50']" @change="sizeChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">激活颜色</view>
- <u-subsection :list="['primary', 'error', 'warning', 'success', 'info']" @change="activeColorChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">每个占一行</view>
- <u-subsection current="1" :list="['是', '否']" @change="wrapChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">每个宽度50%</view>
- <u-subsection current="1" :list="['是', '否']" @change="widthChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">默认选中第一个</view>
- <u-subsection current="1" :list="['是', '否']" @change="defaultChooseChange"></u-subsection>
- </view>
- <view class="u-config-item">
- <view class="u-item-title">禁用第一个</view>
- <u-subsection current="1" :list="['是', '否']" @change="disabledChange"></u-subsection>
- </view>
- </view>
- </view>
- </template>
- <script>
- export default {
- data() {
- return {
- list: [
- {
- name: '荔枝',
- checked: true,
- disabled: false
- },
- {
- name: '香蕉',
- checked: false,
- disabled: false
- },
- {
- name: '橙子',
- checked: false,
- disabled: false
- },
- {
- name: '草莓',
- checked: false,
- disabled: false
- }
- ],
- disabled: false,
- result: '荔枝',
- shape: 'circle',
- value: '荔枝',
- activeColor: '#2979ff',
- size: 34,
- wrap: false,
- width: 'auto'
- }
- },
- methods: {
- shapeChange(index) {
- this.shape = index == 0 ? 'square' : 'circle';
- },
- sizeChange(index) {
- this.size = index == 0 ? 30 : index == 1 ? 40 : 50;
- },
- defaultChooseChange(index) {
- // 特别处理对第一个选的选中的情况,涉及到提示语,选中状态等
- // 实际开发中不会存在这些情况,只是演示用
- if(index == 0) {
- this.result = this.value = this.list[0].name;
- } else {
- if(this.value == this.list[0].name) {
- this.result = this.value = '';
- }
- }
- },
- activeColorChange(index) {
- // 如果用户尚未勾选任何radio,切换颜色时,默认选中第一个让用户看到效果,因为勾选了才有效果
- if(!this.result) this.result = this.value = this.list[0].name;
- let theme = index == 0 ? 'primary' : index == 1 ? 'error' : index == 2 ? 'warning' : index == 3 ? 'success' : 'info';
- this.activeColor = this.$u.color[theme];
- },
- disabledChange(index) {
- if(index == 0) {
- this.list[0].disabled = true;
- } else {
- this.list[0].disabled = false;
- }
- },
- // 选中某个单选框时,由radio时触发
- radioChange(e) {
- //console.log(e);
- },
- // 选中任一radio时,由radio-group触发
- radioGroupChange(e) {
- this.result = e;
- //console.log(e);
- },
- widthChange(index) {
- this.width = index == 0 ? '50%' : '';
- },
- wrapChange(index) {
- this.wrap = !index;
- }
- }
- }
- </script>
- <style scoped lang="scss">
- .u-demo {}
- </style>
|