Vant3 Checkbox復(fù)選框

2021-09-07 15:02 更新

介紹

在一組備選項(xiàng)中進(jìn)行多選。

實(shí)例演示

引入

通過以下方式來全局注冊組件,更多注冊方式請參考組件注冊。

import { createApp } from 'vue';
import { Checkbox, CheckboxGroup } from 'vant';

const app = createApp();
app.use(Checkbox);
app.use(CheckboxGroup);

代碼演示

基礎(chǔ)用法

通過 v-model 綁定復(fù)選框的勾選狀態(tài)。

基礎(chǔ)用法

<van-checkbox v-model="checked">復(fù)選框</van-checkbox>
import { ref } from 'vue';

export default {
  setup() {
    const checked = ref(true);
    return { checked };
  },
};

禁用狀態(tài)

通過設(shè)置 disabled 屬性可以禁用復(fù)選框。

禁用狀態(tài)

<van-checkbox v-model="checked" disabled>復(fù)選框</van-checkbox>

自定義形狀

將 shape 屬性設(shè)置為 square,復(fù)選框的形狀會變成方形。

自定義形狀

<van-checkbox v-model="checked" shape="square">復(fù)選框</van-checkbox>

自定義顏色

通過 checked-color 屬性設(shè)置選中狀態(tài)的圖標(biāo)顏色。

自定義顏色

<van-checkbox v-model="checked" checked-color="#ee0a24">復(fù)選框</van-checkbox>

自定義大小

通過 icon-size 屬性可以自定義圖標(biāo)的大小。

自定義大小

<van-checkbox v-model="checked" icon-size="24px">復(fù)選框</van-checkbox>

自定義圖標(biāo)

通過 icon 插槽自定義圖標(biāo),可以通過 slotProps 判斷是否為選中狀態(tài).

自定義圖標(biāo)

<van-checkbox v-model="checked">
  自定義圖標(biāo)
  <template #icon="props">
    <img class="img-icon" :src="props.checked ? activeIcon : inactiveIcon" />
  </template>
</van-checkbox>

<style>
  .img-icon {
    height: 20px;
  }
</style>
import { ref } from 'vue';

export default {
  setup() {
    const checked = ref(true);
    return {
      checked,
      activeIcon: 'https://img.yzcdn.cn/vant/user-active.png',
      inactiveIcon: 'https://img.yzcdn.cn/vant/user-inactive.png',
    };
  },
};

禁用文本點(diǎn)擊

設(shè)置 label-disabled 屬性后,點(diǎn)擊圖標(biāo)以外的內(nèi)容不會觸發(fā)復(fù)選框切換。

禁用文本點(diǎn)擊

<van-checkbox v-model="checked" label-disabled>復(fù)選框</van-checkbox>

復(fù)選框組

復(fù)選框可以與復(fù)選框組一起使用,復(fù)選框組通過 v-model 數(shù)組綁定復(fù)選框的勾選狀態(tài)。

復(fù)選框組

<van-checkbox-group v-model="checked">
  <van-checkbox name="a">復(fù)選框 a</van-checkbox>
  <van-checkbox name="b">復(fù)選框 b</van-checkbox>
</van-checkbox-group>
import { ref } from 'vue';

export default {
  setup() {
    const checked = ref(['a', 'b']);
    return { checked };
  },
};

水平排列

將 direction 屬性設(shè)置為 horizontal 后,復(fù)選框組會變成水平排列。

水平排列

<van-checkbox-group v-model="checked" direction="horizontal">
  <van-checkbox name="a">復(fù)選框 a</van-checkbox>
  <van-checkbox name="b">復(fù)選框 b</van-checkbox>
</van-checkbox-group>
import { ref } from 'vue';

export default {
  setup() {
    const checked = ref([]);
    return { checked };
  },
};

限制最大可選數(shù)

通過 max 屬性可以限制復(fù)選框組的最大可選數(shù)。

限制最大可選數(shù)

<van-checkbox-group v-model="checked" :max="2">
  <van-checkbox name="a">復(fù)選框 a</van-checkbox>
  <van-checkbox name="b">復(fù)選框 b</van-checkbox>
  <van-checkbox name="c">復(fù)選框 c</van-checkbox>
</van-checkbox-group>

全選與反選

通過 CheckboxGroup 實(shí)例上的 toggleAll 方法可以實(shí)現(xiàn)全選與反選。

全選與反選

<van-checkbox-group v-model="checked" ref="checkboxGroup">
  <van-checkbox name="a">復(fù)選框 a</van-checkbox>
  <van-checkbox name="b">復(fù)選框 b</van-checkbox>
  <van-checkbox name="c">復(fù)選框 c</van-checkbox>
</van-checkbox-group>

<van-button type="primary" @click="checkAll">全選</van-button>
<van-button type="primary" @click="toggleAll">反選</van-button>
import { ref } from 'vue';

export default {
  setup() {
    const checked = ref([]);
    const checkboxGroup = ref(null);

    const checkAll = () => {
      checkboxGroup.value.toggleAll(true);
    }
    const toggleAll = () => {
      checkboxGroup.value.toggleAll();
    },

    return {
      checked,
      checkAll,
      toggleAll,
      checkboxGroup,
    };
  },
};

搭配單元格組件使用

此時(shí)你需要再引入 Cell 和 CellGroup 組件,并通過 Checkbox 實(shí)例上的 toggle 方法觸發(fā)切換。

搭配單元格使用

<van-checkbox-group v-model="checked">
  <van-cell-group>
    <van-cell
      v-for="(item, index) in list"
      clickable
      :key="item"
      :title="`復(fù)選框 ${item}`"
      @click="toggle(index)"
    >
      <template #right-icon>
        <van-checkbox
          :name="item"
          :ref="el => checkboxRefs[index] = el"
          @click.stop
        />
      </template>
    </van-cell>
  </van-cell-group>
</van-checkbox-group>
import { ref, onBeforeUpdate } from 'vue';

export default {
  setup() {
    const checked = ref([]);
    const checkboxRefs = ref([]);
    const toggle = (index) => {
      checkboxRefs.value[index].toggle();
    };

    onBeforeUpdate(() => {
      checkboxRefs.value = [];
    });

    return {
      list: ['a', 'b'],
      toggle,
      checked,
      checkboxRefs,
    };
  },
};

API

Checkbox Props

參數(shù) 說明 類型 默認(rèn)值
v-model 是否為選中狀態(tài) boolean false
name 標(biāo)識符 any -
shape 形狀,可選值為 square string round
disabled 是否禁用復(fù)選框 boolean false
label-disabled 是否禁用復(fù)選框文本點(diǎn)擊 boolean false
label-position 文本位置,可選值為 left string right
icon-size 圖標(biāo)大小,默認(rèn)單位為 px number | string 20px
checked-color 選中狀態(tài)顏色 string #1989fa
bind-group 是否與復(fù)選框組綁定 boolean true

CheckboxGroup Props

參數(shù) 說明 類型 默認(rèn)值
v-model 所有選中項(xiàng)的標(biāo)識符 any[] -
disabled 是否禁用所有復(fù)選框 boolean false
max 最大可選數(shù),0 為無限制 number | string 0
direction 排列方向,可選值為 horizontal string vertical
icon-size 所有復(fù)選框的圖標(biāo)大小,默認(rèn)單位為 px number | string 20px
checked-color 所有復(fù)選框的選中狀態(tài)顏色 string #1989fa

Checkbox Events

事件名 說明 回調(diào)參數(shù)
change 當(dāng)綁定值變化時(shí)觸發(fā)的事件 checked: boolean
click 點(diǎn)擊復(fù)選框時(shí)觸發(fā) event: MouseEvent

CheckboxGroup Events

事件名 說明 回調(diào)參數(shù)
change 當(dāng)綁定值變化時(shí)觸發(fā)的事件 names: any[]

Checkbox Slots

名稱 說明 參數(shù)
default 自定義文本 -
icon 自定義圖標(biāo) { checked: boolean, disabled: boolean }

CheckboxGroup 方法

通過 ref 可以獲取到 CheckboxGroup 實(shí)例并調(diào)用實(shí)例方法,詳見組件實(shí)例方法。

方法名 說明 參數(shù) 返回值
toggleAll 切換所有復(fù)選框,傳 true 為選中,false 為取消選中,不傳參為取反 options?: boolean | object -

toggleAll 方法示例

const { checkboxGroup } = this.$refs;

// 全部反選
checkboxGroup.toggleAll();
// 全部選中
checkboxGroup.toggleAll(true);
// 全部取消
checkboxGroup.toggleAll(false);

// 全部反選,并跳過禁用的復(fù)選框
checkboxGroup.toggleAll({
  skipDisabled: true,
});
// 全部選中,并跳過禁用的復(fù)選框
checkboxGroup.toggleAll({
  checked: true,
  skipDisabled: true,
});

Checkbox 方法

通過 ref 可以獲取到 Checkbox 實(shí)例并調(diào)用實(shí)例方法,詳見組件實(shí)例方法。

方法名 說明 參數(shù) 返回值
toggle 切換選中狀態(tài),傳 true 為選中,false 為取消選中,不傳參為取反 checked?: boolean -

主題定制

樣式變量

組件提供了下列 CSS 變量,可用于自定義樣式,使用方法請參考 ConfigProvider 組件

名稱 默認(rèn)值 描述
--van-checkbox-size 20px -
--van-checkbox-border-color var(--van-gray-5) -
--van-checkbox-transition-duration var(--van-animation-duration-fast) -
--van-checkbox-label-margin var(--van-padding-xs) -
--van-checkbox-label-color var(--van-text-color) -
--van-checkbox-checked-icon-color var(--van-primary-color) -
--van-checkbox-disabled-icon-color var(--van-gray-5) -
--van-checkbox-disabled-label-color var(--van-gray-5) -
--van-checkbox-disabled-background-color var(--van-border-color) -


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號