• el-checkbox实现全选与单选


    实现目的:实现全选与多选,点击确定的时候获取每个值的id传给后台

    1、HTML

    1 <el-checkbox v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
    2 <el-checkbox v-for="(city,i) in cities" :label="city.uuid" :key="i" v-model="city.relation"
    3    @change="handleCheckedCitiesChange">{{city.customerName}}</el-checkbox>
    5                     
    6 <span slot="footer" class="dialog-footer">
    7    <el-button type="primary" :disabled="disabled" @click="classifyConfirm">确定</el-button>
    8    <el-button type="primary" @click="calceConfirn">取消</el-button>
    9 </span>

    2、data

     1  data: function () {
     2     return { 3         checkAll: false,
     4         cities: [], //数据源
    5   }
    6 }
          

    3、js

     1 handleCheckAllChange(val) {
     2    if (this.checkAll) {
     3        this.cities.forEach(item => {
     4             item.relation = true   //只改变数据的状态
     5          })
     6      } else {
     7       this.cities.forEach(item => {
     8           item.relation = false
     9             })
    10           }
    11       },
    12 handleCheckedCitiesChange() {
    13   console.log(this.checkedCities);
    14   if (this.checkedCities.length == this.cities.length) {
    15   this.checkAll = true
    16     } else {
    17       this.checkAll = false
    18    }
    19 },
     1 //确认
     2             classifyConfirm() {
     3                 var checkedAll = [];
     4                 this.cities.forEach(item => {
     5                     if(item.relation == true){
     6                         checkedAll.push(item.uuid)   //确认的时候取状态为true的值,并把要用的字段取出来
     7                     }
     8                 })
     9                 // var checkedAll = [...new Set(this.checkedCities)] //数组去重
    10                 var that = this;
    11                 var data = {
    12                     "customerUuid":that.customerUuid,
    13                     "projectCustomerUuid":checkedAll.join(',')
    14                 };
    15                 console.log(checkedAll)
    16                 this.classLoading = true;
    17                 $.ajax({
    18                     url: Domain + '/xxxxx',
    19                     dataType: "json",
    20                     method: "POST",
    21                     // contentType: "application/json; charset=utf-8",
    22                     data:data,
    23                     success: function (ret) {
    24                         if (ret.retStatus == "1") {
    25                             that.$message({
    26                                 type: 'success',
    27                                 message: '保存成功!'
    28                             });
    29                             that.classLoading = false;32                         }
    33                     }
    34                 })
    35             },

    最开始在改变状态的时候就想着取id了,导致后面一系列的问题,后面经过大佬的提醒,在最开始的时候不要取值,只改变状态就行,最后提交的时候遍历数组,然后把每一项里面为true的取出来就可以了,很简单就解决了

    或者html 这样写也可以:

    <el-checkbox :indeterminate="roleIsIndeterminate" v-model="roleCheckAll" @change="handleRoleAllChange" :disabled="isAllChecked || onlyAllDisabled">全选</el-checkbox>
    <el-checkbox-group v-model="checkedRoles" @change="handleCheckedRolesChange">
    <el-checkbox v-for="role in roleList" :label="role.id" :key="role.id" :disabled="role.disabled">{{role.name}}</el-checkbox>
    </el-checkbox-group>

  • 相关阅读:
    Spring+Hibernate集成后事务与Session的一些理解。
    对Spring的一些个人理解
    centos5.8 x86_64安装oracle10g
    C#中MessageBox用法大全(附效果图)
    解决SQL Server管理器无法连接远程数据库的问题
    【sql2000数据库】Named Pipes Provider error 40
    用SQL数据库批量插入数据简介
    DBGridEH在Delphi7中的安装方法及使用说明
    sql server中datetime字段只取年月日如20060421,默认值如何设置?getdate()得到的是包含时分秒的时间。
    获取 Windows 窗体 DataGridView 控件中选定的单元格、行和列
  • 原文地址:https://www.cnblogs.com/lidonglin/p/13158495.html
Copyright © 2020-2023  润新知