vue element ui 中实现card卡片添加多选框操作

我们有时候会用到card来进行展示数据,但是数据又要进行批量操作,所以在循环的card数据下添加一个多选框能实现相应的功能满足需求。

1、卡片内添加多选框:

 <el-checkbox
              v-if="mutipleSelect"
              v-model="selectionList"
              :label="item.id"
              @change="ids(item.id)"
              >{{ "" }}</el-checkbox
 >

<!---------参数说明:
v-model 代表多选框中显示的状态,选中与非选中,一般绑定一个数组,数组中存在的值就是选中状态。
label   代表多选框中选中的值。
change  多选框改变事件,每次点击改变多选框都触发事件,绑定了一个ids方法。
        (此方法做了一定的数据处理,在选中时将值加进来,取消选中时将值移出去)
-->

2、多选框的函数处理:

 //获取数组中数值的下标
    indexOf(val, ids) {
      for (let i = 0; i < ids.length; i++) {
        //获取当前值的下标
        if (ids[i] === val) {
          return i;
        }
      }
      return -1;
    },

    //多选赋值ids
    ids(val) {
      //检索下标,判断当前值(或对象是否在数组中); 在则返回在的对象,不在则返回-1
      let index = this.indexOf(val, this.selectionList);
      if (this.selectionList.length > 0 && index > -1) {
        //删除数组中的某个元素(在取消勾选时,删除数组中的值)
        this.selectionList.splice(index, 1);
      } else {
        //id添加到数组中
        this.selectionList.push(val);
        //用逗号隔开
        // this.selectionList.join(",");
      }
      // 发射数据给父组件:
      this.$emit("handelSelectionList", this.selectionList);
    },

//此时的selectionList中就是所有选中的id的值。

3、遇到的问题:

此时element checked要点击两次才会显示勾选状态。

原因是:v-model已经改变了@change改变的值,所以相当于改变了两次

解决办法:

将v-model 改为 :value 即可解决

 <el-checkbox
              v-if="mutipleSelect"

              :value="selectionList"

              :label="item.id"
              @change="ids(item.id)"
              >{{ "" }}</el-checkbox
 >

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Vue Element UI 提供了一个文件预览组件,可以用于显示各种类型的文件。你可以通过以下步骤来实现文件预览: 1. 首先,在你的 Vue 项目安装 Element UI,可以使用 npm 或者 yarn 进行安装: ```bash npm install element-ui --save ``` 或者 ```bash yarn add element-ui ``` 2. 在你的 Vue 项目的入口文件导入 Element UI: ```javascript import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 3. 在需要使用文件预览的组件,引入并使用 `el-upload` 组件: ```vue <template> <el-upload class="upload-demo" action="//jsonplaceholder.typicode.com/posts/" :on-preview="handlePreview" :file-list="fileList" list-type="picture-card" :auto-upload="false"> <i class="el-icon-plus"></i> </el-upload> </template> <script> export default { data() { return { fileList: [] } }, methods: { handlePreview(file) { // 在这里处理文件预览逻辑 console.log(file) } } } </script> ``` 在上面的示例代码,我们使用了 `el-upload` 组件来进行文件上传,并且设置了 `list-type` 属性为 `picture-card`,这样上传的文件将会以卡片形式展示。同时,我们还设置了 `:on-preview` 属性来指定文件预览的回调函数 `handlePreview`。 在 `handlePreview` 方法,你可以自定义文件预览的逻辑,可以使用 Element UI 提供的 Dialog 组件等来展示文件内容。 需要注意的是,这个示例代码只是一个简单的演示,你还需要根据你的需求进行相应的修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值