View UI Plus (iview)表格单选实现教程

这篇具有很好参考价值的文章主要介绍了View UI Plus (iview)表格单选实现教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

View UI Plus 是 View Design 设计体系中基于 Vue.js 3 的一套 UI 组件库,主要用于企业级中后台系统

View UI,即原先的 iView,从 2019 年 10 月起正式更名为 View UI,并使用全新的 Logo

View UI Plus 实现表格单选,这里需要用到 render 函数,实现的思路是使用render函数自定义表格列为单选框或多选框,然后监听每个单选框或多选框的chang事件,一旦它们中的任意一个发生变化,则将所有的单选框或多选框选中取消,将发生变化的单选框或多选框设置为选中

先直接上代码看效果,再解释里面的关键点

<template>
  <Table border :columns="columns" :data="data"></Table>
</template>
<script>
  import { resolveComponent } from 'vue';
  export default {
      data () {
          return {
              columns: [
                  {
                      title: '#',
                      key: 'checked',
                      width: 100,
                      align: 'center',
                      render: (h, params) => {
                          return h(resolveComponent('Checkbox'), {
                            'model-value': params.row.checked,
                            onChange: () => {
                              this.data.forEach(item=>{
                                item.checked = false
                              })
                              this.data[params.index].checked = true
                            }
                          })
                      }        
                  },
                  {
                      title: 'Name',
                      key: 'name',
                  },
                  {
                      title: 'Age',
                      key: 'age'
                  },
                  {
                      title: 'Address',
                      key: 'address'
                  }
              ],
              data: [
                  {
                      checked: false,
                      name: 'John Brown',
                      age: 18,
                      address: 'New York No. 1 Lake Park'
                  },
                  {
                      checked: false,
                      name: 'Jim Green',
                      age: 24,
                      address: 'London No. 1 Lake Park'
                  },
                  {
                      checked: false,
                      name: 'Joe Black',
                      age: 30,
                      address: 'Sydney No. 1 Lake Park'
                  },
                  {
                      checked: false,
                      name: 'Jon Snow',
                      age: 26,
                      address: 'Ottawa No. 2 Lake Park'
                  }
              ]
          }
      },
      methods: {
          
      }
  }
</script>

运行效果

View UI Plus (iview)表格单选实现教程

上面代码的关键点有3处

1、是要给表格中数据每个对象添加一个字段checked,这个字段是boolean值,true是选中,false是不选中,将它用来绑定每个checkbox的选中状态

2、是model-value,这个是查看View UI Plus官网文档Checkbox的绑定值,官网文档地址:https://www.iviewui.com/view-ui-plus/component/form/checkbox#API

官网截图

View UI Plus (iview)表格单选实现教程

3、是onChange事件,在选项状态发生改变时触发,这个亦可在官网文档上查到

 View UI Plus (iview)表格单选实现教程

但是上面代码不算完整,因为它存在一个bug,就是当选中一个Checkbox后,再次选中同一个Checkbox,无法取消这个Checkbox的选中状态。即2次点击同一个Checkbox,应该是先选中再取消,但是上面的代码一直是选中状态,无法取消,因为 this.data[params.index].checked = true,将点击的Checkbox一直设置为选中状态

怎么解决这个问题呢?

我们可以先保存一下当前点击的Checkbox的选中状态,然后将所有Checkbox都设置成不选中,然后判断之前保存的Checkbox的选中状态,如果是true,说明点击前是选中状态,则不做任何处理;如果是false,则说明点击前不是选中状态,将它设置成选中状态

代码如下

<template>
  <Table border :columns="columns" :data="data"></Table>
</template>
<script>
  import { resolveComponent } from 'vue';
  export default {
      data () {
          return {
              columns: [
                  {
                      title: '#',
                      key: 'checked',
                      width: 100,
                      align: 'center',
                      render: (h, params) => {
                          return h(resolveComponent('Checkbox'), {
                            'model-value': params.row.checked,
                            onChange: () => {
                              //临时保存之前的选中状态  
                              let tmpChecked = this.data[params.index].checked
                              this.data.forEach(item=>{
                                item.checked = false
                              })
                              if(!tmpChecked) {
                                //如果之前不是选中状态,则设置为选中
                                this.data[params.index].checked = true
                              }
                              
                            }
                          })
                      }        
                  },
                  {
                      title: 'Name',
                      key: 'name',
                  },
                  {
                      title: 'Age',
                      key: 'age'
                  },
                  {
                      title: 'Address',
                      key: 'address'
                  }
              ],
              data: [
                  {
                      checked: false,
                      name: 'John Brown',
                      age: 18,
                      address: 'New York No. 1 Lake Park'
                  },
                  {
                      checked: false,
                      name: 'Jim Green',
                      age: 24,
                      address: 'London No. 1 Lake Park'
                  },
                  {
                      checked: false,
                      name: 'Joe Black',
                      age: 30,
                      address: 'Sydney No. 1 Lake Park'
                  },
                  {
                      checked: false,
                      name: 'Jon Snow',
                      age: 26,
                      address: 'Ottawa No. 2 Lake Park'
                  }
              ]
          }
      },
      methods: {
          
      }
  }
</script>

运行效果

View UI Plus (iview)表格单选实现教程

至此完文章来源地址https://www.toymoban.com/news/detail-491683.html

到了这里,关于View UI Plus (iview)表格单选实现教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue使用Element UI时,el-table表格整行操作单选

    需求:表格复选修改为单选,只可选择一个;不满足条件的不可勾选;可进行整行操作 注意使用的方法. 需求由复选改为单选后, 左上角全选框要进行隐藏 ,复选框也变成单选框,这里是通过css样式进行调整的 勾选复选框的select和整行操作的row-click可以共用同一个方法,

    2024年02月14日
    浏览(33)
  • 随手记:vue2 使用element UI table表格的单选多选反选思路

    selection-change 参数只有一个selection : 可以获取到当前勾选的row的数据,勾选自动行程数组 @selection-change=\\\"handleSelectionChange\\\"    // 多选框选中数据     handleSelectionChange(selection) {         //selection 是勾选中的数组     },  select 参数 selection 选中的数组  row 当前选中的单条数

    2024年04月26日
    浏览(24)
  • element-ui的el-table表格复选框只能单选,不可多选

    element的el-table表格复选框只能选中一条,选择下一条,上一条去掉勾选。使用文档中select方法,el-table绑定一个ref。具体代码实现如下 toggleRowSelection:用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中) 

    2024年02月11日
    浏览(45)
  • Vue3 UI组件库对比,Naive UI、Element Plus、 Ant Design Vue

    Element Plus Naive ui Ant Design Vue 简介 element-ui Vue3版本,国内使用广泛 Vue作者推荐的Vue3ui 组件库 阿里Ant Design设计规范的Vue实现版 地址 https://github.com/element-plus/element-plus https://github.com/tusen-ai/naive-ui https://github.com/vueComponent/ant-design-vue 社区活跃度 高 中 高 ui库组件主要实现方式

    2024年01月25日
    浏览(32)
  • vue使用Element UI时,el-table表格整行操作单选禁选并隐藏全选框

    需求:表格复选修改为单选,只可选择一个;不满足条件的不可勾选;可进行整行操作 注意使用的方法. 需求由复选改为单选后, 左上角全选框要进行隐藏 ,复选框也变成单选框,这里是通过css样式进行调整的 勾选复选框的select和整行操作的row-click可以共用同一个方法,

    2024年02月13日
    浏览(35)
  • vue2/3 - 基于element(ui/plus)实现el-table表格每行可拖动换位置排序,表格列(表头)可拖动交换位置功能效果(table表格可拖曳排序的行和列,用鼠标动态拖拽排序表格行列)

    在vue2、vue3项目开发中,element饿了么组件库实现表格el-table组件支持【行和列可拖曳排序、换位置】功能,每行数据可拖拽进行排序调换位置,每列数据可以自由拖动进行调换位置。 提供详细示例代码,复制源码换个数据就能用了。

    2024年04月13日
    浏览(46)
  • element-ui/view-ui表格的合并行和列的多种方法(超级详细)

    vue的这两个组件库的表格的行和列的合并写法是一样的,都是通过span-method方法可以实现的;下面我们就以view ui的表格组件为例; 该方法参数为 4 个对象: row: 当前行 column: 当前列 rowIndex: 当前行索引 columnIndex: 当前列索引 该函数可以返回一个包含两个元素的数组,第一个元

    2024年04月14日
    浏览(32)
  • vue-i18n国际化多语言与多套UI组件库使用(Element Plus、Ant Design Vue、Naive UI)

    demo源码:Vue3 UI Lang 因调研需要,需在同一个项目中集成好几种UI组件库的多语言实现,查看各种组件库的表现情况,以便选定组件库。 注意:这只在调研过程中会如此,实际开发项目中极少存在一个项目中集成多个UI组件库的情况。 本demo实际试验阿拉伯语、法语、葡萄牙语

    2024年02月08日
    浏览(40)
  • 保姆级教程:Ant Design Vue中 a-table 嵌套子表格

    前端为Ant Design Vue 版本为1.6.2,使用的是vue2 Ant Design Vue中 a-table 嵌套子表格,说的可能稍微墨迹了点,不过重点内容都说的比较详细,利于新人理解,高手可以自取完整代码 下图为官网图,会在每行最前面多一个加号,点击后会展开,看到子表格的数据 子格嵌套从代码层简

    2024年02月01日
    浏览(48)
  • day43-Feedback Ui Design(反馈ui设计)

    效果 index.html style.css script.js

    2024年02月15日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包