vue 默认选中复选框案例

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .main {
            width: 500px;
            margin: 50px auto;
            padding: 15px;
            background-color: antiquewhite;
        }
    </style>
</head>
<body>
    <div class="main">
        <label v-for="item in lableArr">
            <input type="checkbox" :value="item.id" v-model="checkboxValue"/>
            {{item.value}}
            <br/>
        </label>
        <p>选中结果:{{checkboxValue}}</p>
        <label v-for="item1 in lableArr1">
            <input type="checkbox" :value="item1" v-model="checkboxValue1"/>
            {{item1}}
            <br/>
        </label>
        <p>选中结果:{{checkboxValue1}}</p>

<select v-model="selected">
    <option disabled value="">请选择</option>
    <option value="1">A</option>
    <option value="2">B</option>
    <option value="3">C</option>
  </select>
<span>Selected: {{ selected }}</span>


    </div>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
    <script>
        var vueMain = new Vue({
            el: '.main',
            data: {
                lableArr: [
                    {id:1, value:'篮球'},
                    {id:2, value:'足球'},
                    {id:3, value:'网球'},
                    {id:4, value:'排球'},
                    {id:5, value:'羽毛球'}
                ],
                lableArr1: ['篮球', '足球', '网球', '排球', '羽毛球'],
                checkboxValue: [1,3,5],
                checkboxValue1: ['篮球', '足球', '网球'],
                selected: ''
            }
        })
    </script>
</body>
</html>
### 实现 `el-table` 组件中复选框的动态选中 为了实现在 Element UI 的 `el-table` 中根据特定条件动态设置复选框的状态,可以利用 Vue.js 和 Element UI 提供的功能来完成这一需求。 #### 方法概述 通过监听数据变化或者初始化时调用相应的方法,可以根据给定条件控制哪些行应该被默认选中。这通常涉及到使用 `toggleRowSelection` 或者 `clearSelection` 来管理选择状态[^1]。 #### 动态设定初始选中项 如果希望某些记录在页面加载之初就被自动选中,则可以在获取到表格的数据之后立即执行如下操作: ```javascript // 假设 data 是从服务器接收到的数据数组, selectedIds 是需要预先选中的 ID 列表. data.forEach(item => { if (selectedIds.includes(item.id)) { this.$refs.tableRef.toggleRowSelection(item, true); } }); ``` 这段代码遍历了所有的数据条目,并检查它们是否存在于预定义好的 `selectedIds` 数组里;如果是的话就调用 `toggleRowSelection()` 函数将其标记为已选中。 #### 根据业务逻辑更新选中状态 对于更复杂的场景,比如基于用户的交互或者其他事件触发器改变现有选项的情况下,可以通过侦听这些事件并适时调整所关联的行的选择情况: ```javascript methods: { updateSelectedRows(conditionFn) { const tableData = this.$refs.tableRef.data; const currentSelections = this.$refs.tableRef.selection; // Clear all selections first to ensure only matching rows are selected this.$refs.tableRef.clearSelection(); // Iterate over the table's data and apply selection based on condition function provided by caller tableData.forEach((row) => { if (conditionFn(row)) { this.$refs.tableRef.toggleRowSelection(row, true); } }); }, } ``` 这里定义了一个名为 `updateSelectedRows` 的方法接受一个回调函数作为参数,该回调用于决定哪一行应当被选中。此方式允许灵活地根据不同上下文下的具体要求定制化处理流程。 #### 结合树形结构的应用案例 针对具有父子关系的数据集(即所谓的“树型”或层次化的表格),除了上述基本功能外还需要额外考虑子节点与其父节点之间的联动效应。例如,在用户选择了某个父节点的时候也应同步选取它下面的所有后代节点;反之亦然——当所有直系孩子都被取消勾选时要解除对其上级单位的选择标志位[^2]。 ```javascript watch: { 'tableData': { handler(newValue) { newValue.forEach(parentNode => { // Assuming each node has a children property containing its descendants const allChildrenAreChecked = parentNode.children.every(child => this.$refs.treeTableRef.isRowSelected(child)); if (allChildrenAreChecked && !this.$refs.treeTableRef.isSelected(parentNode)) { this.$refs.treeTableRef.toggleRowSelection(parentNode, true); } // Similar logic can be applied inversely when unchecking parent nodes... }); }, deep: true, } }, ``` 以上代码展示了如何监控整个数据集合的变化,并据此判断何时以及怎样去影响其他相关联的对象间的相互作用模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值