复选框 Vue 组件
复选框 Vue 组件表示复选框组件。
复选框组件
共包含以下组件
f7-checkbox
复选框属性
Prop | 类型 | 默认值 | 描述 |
---|---|---|---|
<f7-checkbox> 属性 | |||
checked | 布尔值 | 定义复选框输入是否被选中 | |
indeterminate | 布尔值 | 布尔值 | |
定义复选框输入是否处于不确定状态 | name 字符串 | 数字 | |
复选框输入名称 | name 字符串 布尔值 | value | |
复选框输入值 | 布尔值 | 定义是否禁用复选框输入 | |
readonly | 布尔值 | 定义是否只读复选框输入 |
复选框事件
事件 | 描述 |
---|---|
<f7-checkbox> 事件 | |
change | 当复选框状态改变时触发事件 |
复选框列表
复选框列表不是一个独立组件,而只是使用 <f7-list>
,<f7-list-item>
的一个特殊情况。
<f7-list>
<!-- Additional "checkbox" prop to enable checkbox list item -->
<f7-list-item checkbox value="check_1" checked title="Checkbox 1"></f7-list-item>
<f7-list-item checkbox value="check_2" title="Checkbox 2"></f7-list-item>
</f7-list>
复选框 v-model
复选框 Vue 组件支持 checked
属性上的 v-model
<template>
<f7-page>
<p>
<f7-checkbox v-model:checked="jobIsDone" />
</p>
<f7-list>
<f7-list-item checkbox v-model:checked="jobIsDone" title="Checkbox 1"></f7-list-item>
</f7-list>
<p>Job is done: {{ jobIsDone }}</p>
</f7-page>
</template>
<script>
export default {
data() {
return {
jobIsDone: false,
};
}
};
</script>
示例
checkbox.vue
<template>
<f7-page>
<f7-navbar title="Checkbox"></f7-navbar>
<f7-block-title>Inline</f7-block-title>
<f7-block strong-ios outline-ios>
<p>
Lorem <f7-checkbox name="checkbox-1"></f7-checkbox> ipsum dolor sit amet, consectetur
adipisicing elit. Alias beatae illo nihil aut eius commodi sint eveniet aliquid eligendi
<f7-checkbox name="checkbox-2" checked></f7-checkbox> ad delectus impedit tempore nemo, enim
vel praesentium consequatur nulla mollitia!
</p>
</f7-block>
<f7-block-title>Checkbox Group</f7-block-title>
<f7-list strong-ios outline-ios dividers-ios>
<f7-list-item checkbox title="Books" name="demo-checkbox" checked></f7-list-item>
<f7-list-item checkbox title="Movies" name="demo-checkbox"></f7-list-item>
<f7-list-item checkbox title="Food" name="demo-checkbox"></f7-list-item>
<f7-list-item checkbox title="Drinks" name="demo-checkbox"></f7-list-item>
</f7-list>
<f7-list strong-ios outline-ios dividers-ios>
<f7-list-item
checkbox
checkbox-icon="end"
title="Books"
name="demo-checkbox"
checked
></f7-list-item>
<f7-list-item checkbox checkbox-icon="end" title="Movies" name="demo-checkbox"></f7-list-item>
<f7-list-item checkbox checkbox-icon="end" title="Food" name="demo-checkbox"></f7-list-item>
<f7-list-item checkbox checkbox-icon="end" title="Drinks" name="demo-checkbox"></f7-list-item>
</f7-list>
<f7-block-title>Indeterminate State</f7-block-title>
<f7-list strong-ios outline-ios dividers-ios>
<f7-list-item
checkbox
title="Movies"
name="demo-checkbox"
:checked="movies.length === 2"
:indeterminate="movies.length === 1"
@change="onMoviesChange"
>
<template #root>
<ul>
<f7-list-item
checkbox
title="Movie 1"
name="demo-checkbox"
value="Movie 1"
:checked="movies.indexOf('Movie 1') >= 0"
@change="onMovieChange"
/>
<f7-list-item
checkbox
title="Movie 2"
name="demo-checkbox"
value="Movie 2"
:checked="movies.indexOf('Movie 2') >= 0"
@change="onMovieChange"
/>
</ul>
</template>
</f7-list-item>
</f7-list>
<f7-block-title>With Media Lists</f7-block-title>
<f7-list media-list strong-ios outline-ios dividers-ios>
<f7-list-item
checkbox
checked
name="demo-media-checkbox"
title="Facebook"
after="17:14"
subtitle="New messages from John Doe"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
></f7-list-item>
<f7-list-item
checkbox
name="demo-media-checkbox"
title="John Doe (via Twitter)"
after="17:11"
subtitle="John Doe (@_johndoe) mentioned you on Twitter!"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
></f7-list-item>
<f7-list-item
checkbox
name="demo-media-checkbox"
title="Facebook"
after="16:48"
subtitle="New messages from John Doe"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
></f7-list-item>
<f7-list-item
checkbox
name="demo-media-checkbox"
title="John Doe (via Twitter)"
after="15:32"
subtitle="John Doe (@_johndoe) mentioned you on Twitter!"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
></f7-list-item>
</f7-list>
</f7-page>
</template>
<script>
import {
f7Navbar,
f7Page,
f7BlockTitle,
f7Block,
f7List,
f7ListItem,
f7Checkbox,
} from 'framework7-vue';
export default {
components: {
f7Navbar,
f7Page,
f7BlockTitle,
f7Block,
f7List,
f7ListItem,
f7Checkbox,
},
data() {
return {
movies: ['Movie 1'],
};
},
methods: {
onMovieChange(e) {
const self = this;
const value = e.target.value;
const movies = self.movies;
if (e.target.checked) {
movies.push(value);
} else {
movies.splice(movies.indexOf(value), 1);
}
},
onMoviesChange() {
const self = this;
const movies = self.movies;
if (movies.length === 1 || movies.length === 0) {
self.movies = ['Movie 1', 'Movie 2'];
} else if (movies.length === 2) {
self.movies = [];
}
},
},
};
</script>