问题背景:点击上面的框,选中下面对象的行数据

  刚开始考虑使用的是table的事件:toggleRowSelection,但是发现一个奇怪的现象

<div v-if="orderData.length > 0">
<h5>审核意见:</h5>
<div class="review bg_gray" v-for="(item,index) in orderData">
<div class="content" v-if="item.review_data">
<span @click="toggleSelection(0)">
<el-checkbox v-model="checkList[item.order_id]"></el-checkbox>
</span>
<span>{{item.review_data}}</span>
</div>
</div>
</div> <el-button @click="toggleSelection(0)">选中状态</el-button>
toggleSelection(index){
this.$refs.order.toggleRowSelection(this.orderData[index]);
}

  上面2个方法,一模一样,但是只有第二个能选中,第一个却无效。一直想不明白为什么。

  所以考虑换一种方式:

  直接看代码吧:我在表格里面加了一列checkbox,然后让上面的checkbox和表格里的checkbox的v-model指向同一数据,那么这样上面变化时,下面也会变化,下面变化,上面也跟着变化,同步响应。

  当然如果想下面表格里的chexkbox不能点选,那么就要加上:onclick="return false;",这也是一个技巧吧

<template>
<el-main>
<div v-if="orderData.length > 0">
<h5>审核意见:</h5>
<div class="review bg_gray" v-for="(item,index) in orderData">
<div class="content" v-if="item.review_data">
<el-checkbox v-model="checkList[item.order_id]" v-if="!item.is_choose"></el-checkbox>
<span>{{item.review_data}}</span>
</div>
</div>
<h5>针对以上每一个问题,我们可以为您提供如下服务,确保您的数据库高效稳定运行,您可以勾选下单,我们立即为您服务:</h5>
</div>
<el-table
ref="order"
:data="orderData"
class="serviceStyle"
show-summary
:summary-method="totalRule">
<el-table-column width="">
<template slot-scope="scope">
<el-checkbox onclick="return false;" v-model="checkList[scope.row.order_id]" v-if="!scope.row.is_choose"></el-checkbox>
</template>
</el-table-column>
<el-table-column prop="service_class" label="服务类别"></el-table-column>
<el-table-column prop="service_name" label="服务名称"></el-table-column>
<el-table-column prop="service_price" label="服务价格"></el-table-column>
</el-table>
<div class="btn_submit" v-if="userInfo && userInfo.roleName === 'user'">
<el-button @click="submitOrders('orders')" type="primary" plain>提交订单</el-button>
</div> <h5>您也可以购买一年的云服务,除了解决以上问题外,还能享受到
<router-link :to="'/couldService'">
点击查看云服务详情
</router-link>
</h5>
</el-main>
</template>
<script type="ecmascript-6">
import {getReviewApi,reviewSaveApi} from '@/apis'
import {mapGetters} from 'vuex'
export default {
data(){
return {
orderData:[],
sum:,
orders:[],
checkList:{},
serviceShow:false
}
},
computed:{
...mapGetters(['reportInfo','userInfo'])
},
watch:{
checkList:{
handler:function(oldValue,newValue){
this.orders = JSON.parse(JSON.stringify(this.orderData))//深拷贝的技巧
let count = 0//修正删除的index
this.orderData.forEach((item,index) => {
if(this.checkList[item.order_id]){
this.serviceShow = true
}else{
this.orders.splice(index - count,1)
++count
}
})
},
deep:true

}
},

methods:{
fetchData(){
getReviewApi(this.reportInfo.report_id).then((res) => {
if(res.status === ){
this.orderData = res.data
}
})
},
submitOrders(type){
if(this[type].length === ){
this.$message({
message:'请选择订单',
type:'error'
})
return false
}
reviewSaveApi('choosePreorders',this[type]).then(res => {
if(res.status === ){
this.fetchData()
this.$router.push('/shopCart')
this.$message({
message:'订单提交成功',
type:'success'
})
}
})
},
totalRule(){
let _sum =
this.orderData.forEach(item => {
if(this.checkList[item.order_id]){
_sum += item.service_price
}
})
return ['合计','','',_sum]
}
},
mounted(){
this.fetchData()
}
}
</script>
<style scoped lang="stylus" rel="stylesheet">
@import '../../assets/css/index.styl'
.review{
white-space pre-wrap
padding 10px 20px
font-size 14px
}
.sum{
font-size 14px
text-align right
}
.serviceStyle /deep/ .el-table__footer-wrapper .has-gutter td:nth-child(){
color red
font-size 20px
}
</style>

一个巧妙的方法实现elementUI的table的行选中的更多相关文章

  1. 在 Element-UI 的 Table 组件上添加列拖拽效果

    Element-UI 的 Table组件很强大,但是我们的需求更强大... 简单粗暴的来一发效果图: 一.数据驱动 传统的拖动效果,都是基于通过 mousedown.mousemove.mouseup ...

  2. element-ui的table动态生成表头和数据,且表中数据可编辑

    1.实现表头的动态渲染 2.表头label和prop字段都要定义 3.去判断显示那个数据表 4.实现双击的时候在可编辑 // 双击修改 弹出input tableDbEdit(row, column, ...

  3. element-ui的table表格控件表头与内容列不对齐问题

    原文链接:点我 element-ui的table表格控件表头与内容列不对齐问题 解决方法:将以下样式代码添加到index.html.或app.vue中(必须是入口文件,起全局作用!)body .el- ...

  4. 使用element-ui的table组件时,渲染为html格式

    背景 今天在做vue的项目时,使用到 element-ui 的 table 组件,使用富文本编辑器进行新增操作后,发现 html格式 并没有被识别 原因 在 element-ui 中,table组件默 ...

  5. 对element-ui的table组件的二次封装

    首先,使用过element-ui的table组建的同学都知道,每次使用的时候表头字段都要一个一个的去写,写起来很麻烦,既不美观又浪费时间,基于以上原因,对table组件进行二次封装,使我们在使用的时候 ...

  6. Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...

  7. PHP页面跳转到另一个页面的方法

    用HTTP头信息重定向到另外一个页面的方法如下: <? if (isset($url)) { Header("HTTP/1.1 303 See Other"); Header ...

  8. 当一个类、一个实例域、方法被定义为private、public 时意味着什么

    1.设计private public的原因 2.当一个类.一个实例域.方法被定义为private.public 时意味着什么

  9. (实用篇)PHP页面跳转到另一个页面的方法总结

    一.用HTTP头信息  也就是用PHP的header函数.PHP里的header函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WEB服务器的控制指令,例如声明返回信息的类型("C ...

随机推荐

  1. 【原创】MySQL CPU %sys高的案例分析(一)

    [现象] 最近关注MySQL CPU告警的问题时,发现有一种场景,有一些服务器最近都较频繁的出现CPU告警,其中的现象是 SYS CPU占比较高. 下面的截图来源于“MySQL CPU报警”采集的文件 ...

  2. 洛谷P1154 奶牛分厩

    P1154 奶牛分厩 173通过 481提交 题目提供者该用户不存在 标签高性能 难度普及- 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 测试点3??? 求助!超时了 我抗议 ...

  3. jdk1.8安装后查看Java -version出错

    最近在电脑行安装了多个jdk的版本 分别是jdk1.6,jdk1.7,jdk1.8三个版本,在配置环境变量的时候,选择的是jdk1.7; 但是奇怪的是,当我在cmd中输入java -version后, ...

  4. Winform 串口通讯之读卡器

    老板给我的第一个硬件就是一个读卡器, 说让我做一下试试,于是从网上查了查就写了出来,相当的简单. 但是后来还有一个地磅的串口通讯,我整整搞了一天. 在窗体类的构造函数中写入 Form.CheckFor ...

  5. [BZOJ4820][SDOI2017]硬币游戏(高斯消元+KMP)

    比较神的一道题,正解比较难以理解. 首先不难得出一个(nm)^3的算法,对所有串建AC自动机,将在每个点停止的概率作为未知数做高斯消元即可. 可以证明,AC自动机上所有不是模式串终止节点的点可以看成一 ...

  6. BZOJ 2754 SCOI 2012 喵星球上的点名 后缀数组 树状数组

    2754: [SCOI2012]喵星球上的点名 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 2068  Solved: 907[Submit][St ...

  7. 机器学习(4):BP神经网络原理及其python实现

    BP神经网络是深度学习的重要基础,它是深度学习的重要前行算法之一,因此理解BP神经网络原理以及实现技巧非常有必要.接下来,我们对原理和实现展开讨论. 1.原理  有空再慢慢补上,请先参考老外一篇不错的 ...

  8. MySQL Proxy 实现MySQLDB 读写分离

    一.简述 MySQL Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测.分析或改变它们的通信.它使用灵活,没有限制,常见的用途包括:负载平衡,故障.查询分析 ...

  9. Android项目文件夹结构分析

    项目结构例如以下图所看到的,使用不同sdk版本号建立的项目项目结构有所不同,整体同样,高版本号添加了一些包结构 1.src 和java项目一样src存放项目源码 2.gen 自己主动生成,当中R.ja ...

  10. C#程序集系列01,用记事本编写C#,IL代码,用DOS命令编译程序集,运行程序

    本篇主要体验:编写C#,IL代码,用"VS2012开发人员命令提示"编译成程序集,并运行程序. □ C#文件编译为程序集 →在F盘创建as文件夹→在as文件夹下创建MyClass. ...