选中Vue中一个复选框上的所有复选框

Posted

技术标签:

【中文标题】选中Vue中一个复选框上的所有复选框【英文标题】:Check all checkbox on one checkbox in Vue 【发布时间】:2020-05-20 05:14:00 【问题描述】:

我正在使用 Bootstrap vue。我尝试在一个复选框上检查我的 b 表中的所有复选框。我的复选框位于名为“selected”的插槽内的标签中的 b 表中。

<b-table id="myTabel"
            head-variant="light"
            :items="items"
            :fields="fields">
            <template slot="selected" slot-scope="row">
               <b-form-group>
                  <b-form-checkbox-group id="checkbox-group-2" v-model="selected">
                     <b-form-checkbox :value="row.item.mctname"/>
                  </b-form-checkbox-group>
               </b-form-group>
            </template>
</b-table>

这是我的“全选”复选框

<b-form-checkbox v-model="allSelected">
     allSelected ? 'Uncheck All' : 'Check All'          
</b-form-checkbox>

这是我的脚本代码

<script>
    export default
       data: () => 
          return 
             selected:'',
             items:[],
             allSelected: false,
             fields:
                   mid: 
                   label: "MID",
                   mid: "MID",
                ,
                   mctname: 
                   label: "Name",
                   sortable: true,
                ,
                   status:
                   label: "Status"
                ,                 
             ,
    
</script>

我正在使用 axios 来处理我的表格数据

    loadTable: function() 
    this.loading = true;
    axios
        .get(baseUrl + ".../get_all_items")
        .then(response => 
        this.items = JSON.parse(response.request.responseText);
        this.loading = false;
        this.totalRows = this.items.length;

        )
        .catch(function(error) 
        console.log(error);
        this.loading = false;
        );
    ,

如何在单击表格顶部的“全部选中”复选框时选中所有复选框并取消选中所有复选框?并且在所有的复选框都被选中后,它会返回所有的“mctname”数据。

【问题讨论】:

【参考方案1】:

你可以添加一个watch 钩子:

watch: 
    allSelected: 
        immediate: true,
        handler: function(val) 
            if (val) 
                this.selectAll = true;
                this.returnData();
             else 
                this.selectAll = false;
            
        
    

然后让所有的复选框都依赖于selectAll

【讨论】:

以上是关于选中Vue中一个复选框上的所有复选框的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 选中取消选中页面上的所有复选框

JavaScript 选中或取消选中表单上的所有复选框

选中或取消选中窗体上的所有复选框

Kendo Grid:列标题复选框“选中所有”,在网格所有页面上选中复选框

选中页面上的所有复选框

选中drupal权限页上的所有复选框