iview单选框通过数据的name属性实现数据的筛查代码,并且相同name的按钮只显示一个

该文章介绍了一种使用Vue.js中的RadioGroup组件和v-model指令来绑定单选按钮选中的值。通过computed属性处理uniqueItems和filteredItems,实现对重复数据的去重和根据选中值筛选显示列表的功能。Radio组件的label属性绑定item.name,v-for循环遍历数据,同时使用Set数据结构进行去重。
摘要由CSDN通过智能技术生成

解决方案:首先在模板中使用RadioGroup组件来包裹多个Radio组件,并使用v-model指令来绑定selectedValue属性。selectedValue属性用于存储选中的单选框的值。然后,在v-for指令中使用:label属性来绑定单选框的值,将item.name作为单选框的值。这样,选中单选框时,selectedValue属性的值就会变为选中的item.name。在computed属性中定义了一个uniqueItems计算属性,用于获取去重后的items数组。通过使用Set数据结构来去重,并使用Array.from方法将Set转换为数组。在filteredItems计算属性中,根据选中的值筛查数据。最后,在模板中使用v-for指令循环渲染filteredItems数组中的每一项,并使用:key属性来指定每一项的唯一标识。这样,选中单选框的值时,会根据选中的值来筛查数据,并显示筛查后的结果。相同的name只会显示一次按钮。

<template>
  <div>
    <RadioGroup v-model="selectedValue">
      <Radio :label="item.name" v-for="item in uniqueItems" :key="item.id">
        {{ item.name }}
      </Radio>
    </RadioGroup>
    <ul>
      <li v-for="item in filteredItems" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedValue: '',
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' },
        { id: 3, name: 'Item 3' },
        { id: 4, name: 'Item 1' },
        { id: 5, name: 'Item 2' },
        { id: 6, name: 'Item 3' }
      ]
    }
  },
  computed: {
    uniqueItems() {
      const uniqueSet = new Set(this.items.map(item => item.name))
      return Array.from(uniqueSet).map(name => {
        return this.items.find(item => item.name === name)
      })
    },
    filteredItems() {
      if (this.selectedValue === '') {
        return this.items
      } else {
        return this.items.filter(item => item.name === this.selectedValue)
      }
    }
  },
  methods: {
    handleRadioChange(value) {
      this.selectedValue = value
    }
  }
}
</script>

您可以通过以下步骤实现vue+iview外部按钮删除Table表格通过复选框选中的某一行数据: 1. 在table组件中添加selection-change事件处理函数,用于监听选中数据的变化。 ```html <template> <Table :data="tableData" @selection-change="handleSelectionChange"> <TableColumn type="selection" :selectable="selectable"></TableColumn> <TableColumn label="姓名" prop="name"></TableColumn> <TableColumn label="年龄" prop="age"></TableColumn> <TableColumn label="性别" prop="gender"></TableColumn> </Table> <Button type="primary" @click="handleDelete">删除选中项</Button> </template> ``` 2. 在methods中定义handleSelectionChange方法,用于保存当前选中的数据。 ```javascript methods: { handleSelectionChange(selectedItems) { this.selectedItems = selectedItems; }, handleDelete() { // 删除选中的数据 this.selectedItems.forEach(item => { const index = this.tableData.indexOf(item); this.tableData.splice(index, 1); }); // 取消选中状态 this.$refs.table.clearSelection(); } } ``` 3. 在handleDelete方法中实现删除选中的数据,并调用$refs.table.clearSelection()方法取消选中状态。 完整代码如下: ```html <template> <Table :data="tableData" @selection-change="handleSelectionChange" ref="table"> <TableColumn type="selection" :selectable="selectable"></TableColumn> <TableColumn label="姓名" prop="name"></TableColumn> <TableColumn label="年龄" prop="age"></TableColumn> <TableColumn label="性别" prop="gender"></TableColumn> </Table> <Button type="primary" @click="handleDelete">删除选中项</Button> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' } ], selectedItems: [] }; }, methods: { handleSelectionChange(selectedItems) { this.selectedItems = selectedItems; }, handleDelete() { // 删除选中的数据 this.selectedItems.forEach(item => { const index = this.tableData.indexOf(item); this.tableData.splice(index, 1); }); // 取消选中状态 this.$refs.table.clearSelection(); } } }; </script> ``` 其中,需要注意的是在TableColumn中添加了type="selection"属性,用于实现复选框选择功能。同时,还需要定义selectable方法,用于控制某些行是否可选。 ```javascript selectable(row, index) { // 第一行不可选 return index !== 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值