复选框 Vue 组件

复选框组件表示复选框组件。

复选框组件

包含以下组件:

复选框属性

属性类型默认描述
<f7-checkbox> 属性
已选中布尔值定义复选框输入是否选中
indeterminate布尔值定义复选框输入是否处于不确定状态
name字符串
数字
复选框输入名称
字符串
数字
布尔值
复选框输入值
禁用布尔值定义复选框输入是否禁用
只读布尔值定义复选框输入是否只读

复选框事件

事件描述
<f7-checkbox> 事件
change当复选框状态改变时将触发事件

复选框列表

复选框列表不是一个单独的组件,而只是使用 checkbox.svelte 的一个特例<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 组件支持v-modelonchecked派发动作

<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>
无噪 Logo
无噪文档
中文文档 · 复刻官网
查看所有 ↗