template HTML 结构

radio 我是用的vux 中的checker 组件;(这个可以改成原生radio ;也可以绑定v-model)

<div class="list" v-for="(item,index) in messageList"><div class="top flex-row"><div class="radio article flex-grow-0"><checker v-model="item.model" @click.native="change(index)" default-item-class="defaultClass"selected-item-class="selectedClass"><checker-item @on-item-click="onItemClick" :value="item.id"></checker-item></checker></div><div class="time flex-grow-1 flex-right"><div>{{item.insertTime}}</div></div></div><div @click="toDetails(item.id)" class="bottom flex-row"><div v-if="item.hasRead==0" class="small_article flex-grow-0"></div><div class="flex-grow-1"><div class="title">{{item.title}}</div><p class="desc">{{item.content}}</p></div></div></div>复制代码

先看页面图吧

主要用的是知识点 就是 vue 中的 $set 方法;可以给任意对象设置属性,

这里就是没选一个就给当前项的list设置一个checked 属性true 否则就是false

change(index) {if (this.parentVal) {this.$set(this.messageList[index], 'checked', true);} else {this.$set(this.messageList[index], 'checked', false);}// console.log(this.selectMessage);},复制代码

再来一个计算属性来过滤控制messageList中那几个别选中并存在一个数组中

computed: {selectMessage() {let selectMessage = [];this.messageList.forEach((val) => {if (val.checked) {selectMessage.push(val);//val.model=val.selected;}});return selectMessage;}},复制代码

在来看看顶部选项的操作

topItemClick(index) {var that = this;//删除if (index == 2) {if (this.selectMessage.length > 0) {var messageIds = '';this.selectMessage.forEach((val) => {if (val.checked) {messageIds += val.id + ',';}});messageIds = messageIds.substr(0, messageIds.length - 1)this.$vux.confirm.show({title: '温馨提示',content: `确定要删除该消息`,confirmText: '确定',onCancel() {
​},onConfirm(msg) {that.$ajax.get(MESSAGEDELETE, {messageIds: messageIds}, res => {that.initData();});}});}} else if (index == 0) {//全选this.messageList.forEach((val, index) => {if (val) {this.$set(this.messageList[index], 'model', val.id);this.$set(this.messageList[index], 'checked', true);}})} else if (index == 1) {//反选this.messageList.forEach((val, index) => {if (val.checked) {this.$set(this.messageList[index], 'model', '');this.$set(this.messageList[index], 'checked', false);} else {this.$set(this.messageList[index], 'model', val.id);this.$set(this.messageList[index], 'checked', true);}})}},复制代码

复习哈 数组api -> splice

splice(index,len,[item]) 注释:该方法会改变原始数组。

splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值

index:数组开始下标 len: 替换/删除的长度 item:替换的值,删除操作的话 item为空

删除 arr.splice(1,1)

替换 arr.splice(1,1,'ttt')

添加 arr.splice(1,0,'ttt' )

转载于:https://juejin.im/post/5bc16637e51d450e543eba66

vue 工作项目中 实现消息列表的 全选,反选,删除功能相关推荐

  1. vue移动项目中如何设置点击手机号码就唤起拨号功能

    vue移动项目中如何设置点击手机号码就可以打电话 在vue项目的index.html中添加如下代码: <meta name="format-detection" conten ...

  2. Vue.JS项目中二级路由下刷新浏览器仍呈现当前路由的实现方案

    1.需求介绍: 以下介绍一下实现起来没什么疑问的需求:设备列表为一个主页,点击设备列表中的编辑按钮,进入设备信息主页面,默认打开设备配置页,点击设备状态.设备日志.固件升级,会切换下方内容. 本人对以 ...

  3. 智能家居DIY连载教程(2)——在实际项目中运用消息队列与邮箱

    前言 千呼万唤始出来,智能家居 DIY 教程连载第二篇终于登场了!本文将重点给大家介绍如何将消息队列与邮箱运用到实际项目中去.一起来看看吧~ DIY 回顾上期: 1.智能家居DIY连载教程(1)--如 ...

  4. 多个html如何套用套一个头部,Vue.js项目中管理每个页面的头部标签的两种方法...

    在 Vue SPA 应用中,如果想要修改 HTML 的头部标签,如页面的 title ,我们只能去修改 index.html 模板文件,但是这个是全局的修改,如何为每个页面都设置不一样的 title ...

  5. vue.js项目中,关于element-ui完整引入、按需引入的介绍

    element-ui引入方式,简单说来有两种:完整引入.按需引入 首先谈一下npm安装element-ui的方法: cmd到项目目录,然后执行cmd命令:npm i element-ui -S稍等片刻 ...

  6. Vue.js项目中,当图片无法显示时则显示默认图片

    Vue.js项目中,当图片无法显示时则显示默认图片使用onerror方法 最近在学习Vue时,遇到了一个问题,就是从后台传过来的图片路径无效时,需要在页面显示默认图片 本人试了3种方法,2种方法失败了 ...

  7. html调用腾讯地图定位当前位置,vue web项目中调用腾讯地图API获取当前位置的经纬度...

    vue web项目中调用腾讯地图API获取当前位置的经纬度 vue web项目中调用腾讯地图API获取当前位置的经纬度 在main.js 中添加一下代码 import axios from 'axio ...

  8. 实际项目中的消息中心

    前一篇文章讲到我们项目的工作流,这一篇我们扒一扒项目中的消息中心,msgcenter.消息可以分成很多种消息:留存可重复查看的DB消息,短暂保存在redis的comet消息,短信形式的msg消息,推送 ...

  9. vue+ts项目中import图片时报错Cannot find module ‘xxx‘ or its corresponding type declarations

    TS项目中import图片时报错Cannot find module 'xxx' or its corresponding type declarations 在vue+ts项目中使用import的形 ...

最新文章

  1. 异形隔离java剧情_异形隔离攻略 系统上手教程 全剧情流程图文攻略(41)
  2. QT的QWinThumbnailToolBar类的使用
  3. C#日期时间类型格式化大全集 C#DateTime 类型格式化大全集
  4. 怎么用计算机改变声音的音调,调音台使用教程大全
  5. [Code Snipper]图片轮换
  6. 【推荐实践】强化学习在美团“猜你喜欢”的实践
  7. Goscan:功能强大的交互式网络扫描工具
  8. System与Runtime类
  9. 如何查看计算机关机事件,深度技术win7系统如何查看电脑的开关机时间【图文】...
  10. Java:每日获取稳定可用免费代理ip(仅供日常使用,请勿用作他途)
  11. 待我君临天下,定许你一世繁华。
  12. 安装elasticsearch
  13. 基于android的宠物领养系统
  14. 图数据库发展趋势概览
  15. 常见的网络安全风险有哪些?
  16. 图片验证码识别程序全面分析
  17. 项目_MySQL比较字符大小的小坑
  18. 标题:互联网轻松赚钱之道。。
  19. Minecraft Paper 1.18.1 版开服教程,我的世界开服教程,MCSManager9面板使用教程
  20. 希望若干年之后,回首这片田野已遍地花开

热门文章

  1. 今天带你详细了解各组件原理
  2. linux spoon.sh闪退,kettle使用spoon.sh打开报错问题解决
  3. class react 获取_「前端进阶」React系列九 - 受控非受控组件
  4. 怎么让同网络计算机强制关机,知道局域网ip怎么关机
  5. python模块下载1002python模块下载_【Python】Python的urllib模、urllib2模块的网络下载文件...
  6. Fiber 数据结构是怎样的?
  7. 深入理解继承知识(下)
  8. 技术选择真的没有那么重要
  9. mysql无法输入数据库_关于mysql数据库无法录入中文的问题
  10. Linux下hba卡驱动的卸载,SLES11下如何重装qlogic FC HBA卡驱动