2020-11-04 10:30:14 +08:00
|
|
|
## スイッチ
|
|
|
|
|
2021-04-26 11:53:09 +08:00
|
|
|
スイッチは、2 つの状態を切り替えるために使用されます。
|
2020-11-04 10:30:14 +08:00
|
|
|
|
|
|
|
### 基本的な使い方
|
2021-04-26 11:53:09 +08:00
|
|
|
|
|
|
|
:::demo `v-model` を `Boolean` 型変数にバインドする。`active-color`と`inactive-color`属性は、2 つの状態の背景色を決定する。
|
2020-11-04 10:30:14 +08:00
|
|
|
|
|
|
|
```html
|
2021-04-26 11:53:09 +08:00
|
|
|
<el-switch v-model="value1"> </el-switch>
|
|
|
|
<el-switch v-model="value2" active-color="#13ce66" inactive-color="#ff4949">
|
2020-11-04 10:30:14 +08:00
|
|
|
</el-switch>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
value1: true,
|
2021-04-26 11:53:09 +08:00
|
|
|
value2: true,
|
2020-11-04 10:30:14 +08:00
|
|
|
}
|
2021-04-26 11:53:09 +08:00
|
|
|
},
|
|
|
|
}
|
2020-11-04 10:30:14 +08:00
|
|
|
</script>
|
|
|
|
```
|
2021-04-26 11:53:09 +08:00
|
|
|
|
2020-11-04 10:30:14 +08:00
|
|
|
:::
|
|
|
|
|
|
|
|
### テキストの説明
|
2021-04-26 11:53:09 +08:00
|
|
|
|
2020-11-04 10:30:14 +08:00
|
|
|
:::demo テキストを表示するために `active-color` と `inactive-color` 属性を追加することができます。
|
|
|
|
|
|
|
|
```html
|
|
|
|
<el-switch
|
|
|
|
v-model="value1"
|
|
|
|
active-text="Pay by month"
|
2021-04-26 11:53:09 +08:00
|
|
|
inactive-text="Pay by year"
|
|
|
|
>
|
2020-11-04 10:30:14 +08:00
|
|
|
</el-switch>
|
|
|
|
<el-switch
|
|
|
|
style="display: block"
|
|
|
|
v-model="value2"
|
|
|
|
active-color="#13ce66"
|
|
|
|
inactive-color="#ff4949"
|
|
|
|
active-text="Pay by month"
|
2021-04-26 11:53:09 +08:00
|
|
|
inactive-text="Pay by year"
|
|
|
|
>
|
2020-11-04 10:30:14 +08:00
|
|
|
</el-switch>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
value1: true,
|
2021-04-26 11:53:09 +08:00
|
|
|
value2: true,
|
2020-11-04 10:30:14 +08:00
|
|
|
}
|
2021-04-26 11:53:09 +08:00
|
|
|
},
|
|
|
|
}
|
2020-11-04 10:30:14 +08:00
|
|
|
</script>
|
|
|
|
```
|
2021-04-26 11:53:09 +08:00
|
|
|
|
2020-11-04 10:30:14 +08:00
|
|
|
:::
|
|
|
|
|
|
|
|
### 拡張された値型
|
|
|
|
|
|
|
|
:::demo `active-value`と`inactive-value`を設定することができる。どちらも `Boolean`, `String` または `Number` 型の値を受け取る。
|
|
|
|
|
|
|
|
```html
|
|
|
|
<el-tooltip :content="'Switch value: ' + value" placement="top">
|
|
|
|
<el-switch
|
|
|
|
v-model="value"
|
|
|
|
active-color="#13ce66"
|
|
|
|
inactive-color="#ff4949"
|
|
|
|
active-value="100"
|
2021-04-26 11:53:09 +08:00
|
|
|
inactive-value="0"
|
|
|
|
>
|
2020-11-04 10:30:14 +08:00
|
|
|
</el-switch>
|
|
|
|
</el-tooltip>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
2021-04-26 11:53:09 +08:00
|
|
|
value: '100',
|
2020-11-04 10:30:14 +08:00
|
|
|
}
|
2021-04-26 11:53:09 +08:00
|
|
|
},
|
|
|
|
}
|
2020-11-04 10:30:14 +08:00
|
|
|
</script>
|
|
|
|
```
|
|
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
### 無効化
|
|
|
|
|
|
|
|
:::demo `disabled`属性を追加すると、スイッチを無効にすることができます。
|
|
|
|
|
|
|
|
```html
|
2021-04-26 11:53:09 +08:00
|
|
|
<el-switch v-model="value1" disabled> </el-switch>
|
|
|
|
<el-switch v-model="value2" disabled> </el-switch>
|
2020-11-04 10:30:14 +08:00
|
|
|
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
value1: true,
|
2021-04-26 11:53:09 +08:00
|
|
|
value2: false,
|
2020-11-04 10:30:14 +08:00
|
|
|
}
|
2021-04-26 11:53:09 +08:00
|
|
|
},
|
|
|
|
}
|
2020-11-04 10:30:14 +08:00
|
|
|
</script>
|
|
|
|
```
|
2021-04-26 11:53:09 +08:00
|
|
|
|
2020-11-04 10:30:14 +08:00
|
|
|
:::
|
|
|
|
|
2020-11-11 18:19:52 +08:00
|
|
|
### ローディング
|
|
|
|
|
|
|
|
:::demo `loading`属性を`true`に設定すると、ロード状態を表示することができます。
|
|
|
|
|
|
|
|
```html
|
2021-04-26 11:53:09 +08:00
|
|
|
<el-switch v-model="value1" loading> </el-switch>
|
|
|
|
<el-switch v-model="value2" loading> </el-switch>
|
2020-11-11 18:19:52 +08:00
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
value1: true,
|
2021-04-26 11:53:09 +08:00
|
|
|
value2: false,
|
2020-11-11 18:19:52 +08:00
|
|
|
}
|
2021-04-26 11:53:09 +08:00
|
|
|
},
|
|
|
|
}
|
2020-11-11 18:19:52 +08:00
|
|
|
</script>
|
|
|
|
```
|
2021-04-26 11:53:09 +08:00
|
|
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
### 切り替えを防ぐ
|
|
|
|
|
|
|
|
:::demo `beforeChange`プロパティを設定します。false を返すか、Promise を返し、拒否された場合は、切り替えを停止します。
|
|
|
|
|
|
|
|
```html
|
|
|
|
<el-switch v-model="value1" :loading="loading1" :beforeChange="beforeChange1">
|
|
|
|
</el-switch>
|
|
|
|
<el-switch v-model="value2" :loading="loading2" :beforeChange="beforeChange2">
|
|
|
|
</el-switch>
|
|
|
|
<script>
|
|
|
|
import { reactive, toRefs } from 'vue'
|
|
|
|
import { ElMessage } from 'element-plus'
|
|
|
|
|
|
|
|
export default {
|
|
|
|
setup() {
|
|
|
|
const status1 = reactive({
|
|
|
|
value1: false,
|
|
|
|
loading1: false,
|
|
|
|
})
|
|
|
|
|
|
|
|
const beforeChange1 = () => {
|
|
|
|
status1.loading1 = true
|
|
|
|
return new Promise(resolve => {
|
|
|
|
setTimeout(() => {
|
|
|
|
status1.loading1 = false
|
|
|
|
ElMessage.success('正常に切り替えます')
|
|
|
|
return resolve(true)
|
|
|
|
}, 1000)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
const status2 = reactive({
|
|
|
|
value2: false,
|
|
|
|
loading2: false,
|
|
|
|
})
|
|
|
|
|
|
|
|
const beforeChange2 = () => {
|
|
|
|
status2.loading2 = true
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
setTimeout(() => {
|
|
|
|
status2.loading2 = false
|
|
|
|
ElMessage.error('スイッチに失敗しました')
|
|
|
|
return reject(new Error('error'))
|
|
|
|
}, 1000)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
...toRefs(status1),
|
|
|
|
...toRefs(status2),
|
|
|
|
beforeChange1,
|
|
|
|
beforeChange2,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
```
|
|
|
|
|
2020-11-11 18:19:52 +08:00
|
|
|
:::
|
|
|
|
|
2020-11-04 10:30:14 +08:00
|
|
|
### 属性
|
|
|
|
|
2021-04-26 11:53:09 +08:00
|
|
|
| Attribute | Description | Type | Accepted Values | Default |
|
|
|
|
| ------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------- | --------------- | ------- |
|
|
|
|
| value / v-model | バインド値は、"active-value "または "inactive-value "と等しくなければなりません。デフォルトの型は "boolean "です。 | boolean / string / number | — | — |
|
|
|
|
| disabled | スイッチが無効になっているかどうか | boolean | — | false |
|
|
|
|
| loading | スイッチがロード中になっているかどうか | boolean | — | false |
|
|
|
|
| width | スイッチの幅 | number | — | 40 |
|
|
|
|
| active-icon-class | `on` 状態のときに表示されるアイコンのクラス名で、`active-text` を上書きします。 | string | — | — |
|
|
|
|
| inactive-icon-class | `off` 状態のときに表示されるアイコンのクラス名で、`inactive-text` を上書きします。 | string | — | — |
|
|
|
|
| active-text | `on` 状態のときに表示されるテキスト | string | — | — |
|
|
|
|
| inactive-text | `off` 状態のときに表示されるテキスト | string | — | — |
|
|
|
|
| active-value | `on` 状態のときのスイッチの値 | boolean / string / number | — | true |
|
|
|
|
| inactive-value | `off` 状態のときのスイッチの値 | boolean / string / number | — | false |
|
|
|
|
| active-color | `on` 状態のときの背景色 | string | — | #409EFF |
|
|
|
|
| inactive-color | `off` 状態のときの背景色 | string | — | #C0CCDA |
|
|
|
|
| name | スイッチのインプット名 | string | — | — |
|
|
|
|
| validate-event | フォームバリデーションをトリガするかどうか | boolean | — | true |
|
|
|
|
| before-change | スイッチの状態が変化する前のフックは、false を返すか、Promise を返し、切り替えを停止するために拒否されます | function | — | — |
|
2020-11-04 10:30:14 +08:00
|
|
|
|
|
|
|
### イベント
|
|
|
|
|
2021-04-26 11:53:09 +08:00
|
|
|
| Event Name | Description | Parameters |
|
|
|
|
| ---------- | -------------------- | -------------------- |
|
|
|
|
| change | 値が変わるとトリガー | value after changing |
|
2020-11-04 10:30:14 +08:00
|
|
|
|
|
|
|
### メソッド
|
2021-04-26 11:53:09 +08:00
|
|
|
|
|
|
|
| Method | Description | Parameters |
|
|
|
|
| ------ | ---------------------------------- | ---------- |
|
|
|
|
| focus | スイッチコンポーネントにフォーカス | — |
|