1.顯示的dialog
<!-- 選中標簽 --> <el-dialog :visible.sync="checkTag" :title="userTitle" width="30%" @close="tagID = []"> <div v-loading="listLoadingTag" element-loading-text="心急吃不了熱豆腐"> <div class="tages"> <el-checkbox-group v-model="checkedTags" > <el-checkbox v-for="(item,index) in tages" :indeterminate="item.status === 'half_checked'" :label="index" :key="index" @change="changeCheckCss(index)"> {{ item.label_name }} </el-checkbox> </el-checkbox-group> </div> </div> <span slot="footer" class="dialog-footer"> <el-button @click="handelCloseTag">取 消</el-button> <el-button type="primary" @click="submitcheckTag">確 定</el-button> </span> </el-dialog>
2.切換狀態
changeCheckCss(index) { this.tages[index].status = false },
3.拿到只改變發生改變的數據處理邏輯
this.submitTags = [] // 篩選出新選中的值 for (let i = 0; i < this.checkedTags.length; i++) { let num = 0 for (let j = 0; j < this.CopycheckedTags.length; j++) { if (this.checkedTags[i] === this.CopycheckedTags[j]) { num += 1 break } } if (num === 0) { const obj = { id: this.tages[this.checkedTags[i]].id, status: 'checked' } this.submitTags.push(obj) } } // 篩選沖被取消選中的值 for (let i = 0; i < this.CopycheckedTags.length; i++) { let num = 0 for (let j = 0; j < this.checkedTags.length; j++) { if (this.CopycheckedTags[i] === this.checkedTags[j]) { num += 1 break } } if (num === 0) { const obj = { id: this.tages[this.CopycheckedTags[i]].id, status: 'not_checked' } this.submitTags.push(obj) } }