dataV组件使用——数据更新更新组件

news2024/9/22 10:26:45

bug 当数据更新只更新一个属性页面不会刷新(this.config1.data = arr;)
必须重新赋值整个config

image.png

方式一:检测到数据更新重新赋值config

 this.config1 = {
      data: arr,
      header: ["所在单位", "人员姓名", "职位", "联系方式", "人员状态"],
      align: ["center", "center", "center", "center", "center"],
      columnWidth: [150],
      rowNum: 7,
      evenRowBGC: "rgba(33, 78, 133,.5)",
      oddRowBGC: "transparent",
      headerBGC: "",
      waitTime: 1000,
      headerHeight: "45",
 };

方式二:同理使用es6语法

this.config1.data = arr;
this.config1={...this.config1}
<template>
  <dv-scroll-board
    :config="
      type == 1 ? config1 : type == 2 ? config2 : type == 3 ? config3 : config4
    "
    ref="scrollBoard"
    class="w100 h100"
  />
</template>
<script>
export default {
  props: ["list", "type"],
  watch: {
    list: {
      handler(val) {
        // console.log("watch监听", val, this.type, 777777);
        if (val) {
          if (this.type == 1) {
            let arr = val.map((el) => {
              return [
                el.deptName,
                el.personName,
                el.postName,
                el.phoneNumber,
                `<span class="${
                  el.memberTypeName == "在岗"
                    ? "green1"
                    : el.memberTypeName == "培训" || el.memberTypeName == "出差"
                    ? "red1"
                    : el.memberTypeName == "休假" || el.memberTypeName == "轮休"
                    ? "yellow1"
                    : "blue1"
                }">${el.memberTypeName}</span>`,
              ];
            });
            // ☆☆☆☆☆ bug 当数据更新只更新一个属性页面不会刷新(this.config1.data = arr;)
            // 必须重新赋值整个config
            /**
             * 方式一 :
             * this.config1.data = arr;
             * this.config1={...this.config1}
             */
            /**
             * 方式二 : 如下重新写一遍
             */
            /**
             * 方式三: 直接在html中绑定对象就会监听到
             */
            this.config1 = {
              data: arr,
              header: ["所在单位", "人员姓名", "职位", "联系方式", "人员状态"],
              align: ["center", "center", "center", "center", "center"],
              columnWidth: [150],
              rowNum: 7,
              evenRowBGC: "rgba(33, 78, 133,.5)",
              oddRowBGC: "transparent",
              headerBGC: "",
              waitTime: 1000,
              headerHeight: "45",
            };
            // console.log("config1", arr, this.config1);
            // this.$refs["scrollBoard"].updateRows(arr, 0);
          } else if (this.type == 2) {
            let arr = val.map((el) => {
              return [
                el.deptName,
                el.carName,
                el.carTypeName,
                el.carNumber,
                `<span class="${
                  el.carStatusName == "正常"
                    ? "green1"
                    : el.carStatusName == "维修"
                    ? "red1"
                    : "blue1"
                }">${el.carStatusName}</span>`,
              ];
            });
            // this.config2.data = arr;
            this.config2 = {
              data: arr,
              header: [
                "所在单位",
                "车辆名称",
                "车辆属性",
                "车牌号",
                "车辆状态",
              ],
              align: ["center", "center", "center", "center", "center"],
              columnWidth: [150],
              rowNum: 7,
              evenRowBGC: "rgba(33, 78, 133,.5)",
              oddRowBGC: "transparent",
              headerBGC: "",
              waitTime: 1000,
              headerHeight: "45",
            };
            // console.log("config2", arr, this.config2);
            // this.$refs["scrollBoard"].updateRows(arr, 0);
          } else if (this.type == 3) {
            let arr = val.map((el) => {
              return [
                el.dutyTypeName,
                el.userName,
                el.workPhoneNumber,
                el.mobilePhoneNumber,
                el.virtualNumber,
              ];
            });
            // this.config2.data = arr;
            this.config3 = {
              data: arr,
              header: ["值班类型", "姓名", "工作电话", "联系电话", "虚拟号"],
              align: ["center", "center", "center", "center", "center"],
              columnWidth: [100, , , ,],
              rowNum: 4,
              evenRowBGC: "rgba(33, 78, 133,.5)",
              oddRowBGC: "transparent",
              headerBGC: "",
              waitTime: 1000,
              headerHeight: "35",
            };
            // console.log("config3", arr, this.config3);
            // this.$refs["scrollBoard"].updateRows(arr, 0);
          } else if (this.type == 4) {
            let arr = val.map((el) => {
              return [el.dutyDeptName, el.userName, el.mobilePhoneNumber];
            });
            // this.config2.data = arr;
            this.config4 = {
              data: arr,
              header: ["值班类型", "值班人员", "联系电话"],
              align: ["center", "center", "center"],
              columnWidth: [150, 150, ,],
              rowNum: 7,
              evenRowBGC: "rgba(33, 78, 133,.5)",
              oddRowBGC: "transparent",
              headerBGC: "",
              waitTime: 3000,
              headerHeight: "45",
            };
            // console.log("config3", arr, this.config3);
            // this.$refs["scrollBoard"].updateRows(arr, 0);
          }
        }
      },
      // 这里是关键,代表递归监听的变化
      deep: true,
      // immediate: true,
    },
  },
  data() {
    return {
      config1: {
        header: ["所在单位", "人员姓名", "职位", "联系方式", "人员状态"],
        data: [],
        align: ["center", "center", "center", "center", "center"],
        columnWidth: [150],
        rowNum: 7,
        evenRowBGC: "rgba(33, 78, 133,.5)",
        oddRowBGC: "transparent",
        headerBGC: "",
        waitTime: 1000,
        headerHeight: "45",
      },
      config2: {
        header: ["所在单位", "车辆名称", "车辆属性", "车牌号", "车辆状态"],
        data: [],
        align: ["center", "center", "center", "center", "center"],
        columnWidth: [150],
        rowNum: 7,
        evenRowBGC: "rgba(33, 78, 133,.5)",
        oddRowBGC: "transparent",
        headerBGC: "",
        waitTime: 1000,
        headerHeight: "45",
      },
      config3: {
        header: ["值班类型", "姓名", "工作电话", "联系电话", "虚拟号"],
        data: [],
        align: ["center", "center", "center", "center", "center"],
        // columnWidth: [150],
        rowNum: 4,
        evenRowBGC: "rgba(33, 78, 133,.5)",
        oddRowBGC: "transparent",
        headerBGC: "",
        waitTime: 1000,
        headerHeight: "35",
      },
      config4: {
        header: ["值班类型", "值班人员", "联系电话"],
        data: [],
        align: ["center", "center", "center"],
        // columnWidth: [150],
        rowNum: 7,
        evenRowBGC: "rgba(33, 78, 133,.5)",
        oddRowBGC: "transparent",
        headerBGC: "",
        waitTime: 1000,
        headerHeight: "35",
      },
    };
  },

  mounted() {},
  // 销毁定时器
  beforeDestroy() {},

  methods: {},
};
</script>
<style lang="scss" scoped>
@import "../components/css/rem.scss";

::v-deep.dv-scroll-board .header .header-item {
  // color: #f39800;
  // color: cyan;
  color: #6fddc2;
  font-weight: 700;
}

::v-deep.dv-scroll-board.solo .rows {
  border: 1px solid rgba(0, 238, 255, 0.123);
}

::v-deep.dv-scroll-board .green1,
::v-deep.dv-scroll-board .red1,
::v-deep.dv-scroll-board .yellow1,
::v-deep.dv-scroll-board .blue1 {
  padding: 4px 10px;
  border-radius: 4px;
  font-size: 12px;
}

::v-deep.dv-scroll-board .green1 {
  border: 1px solid cyan;
  background: rgba(0, 255, 255, 0.2);
}

::v-deep.dv-scroll-board .red1 {
  border: 1px solid rgb(250, 13, 84);
  background: rgba(250, 13, 84, 0.2);
}

::v-deep.dv-scroll-board .blue1 {
  border: 1px solid rgb(0, 89, 255);
  background: rgba(0, 89, 255, 0.2);
}

::v-deep.dv-scroll-board .yellow1 {
  border: 1px solid rgb(250, 213, 2);
  background: rgba(250, 213, 2, 0.2);
}
</style>

方法三:直接在html中绑定对象,数据变化会自动更新页面

image.png

 <dv-water-level-pond style="width: 0.65rem; height: 0.65rem"
   :config="{
      data: [res.currentLevel],
      waveNum: 1,
      waveHeight: 10,
      waveOpacity: 0.5,
      shape: 'round',
      colors: ['#fff', '#ff3300']
  }" 
/>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2041954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端模式设计】js订阅发布模式之我见

一知半解最可怕 /*** description 订阅发布通知*/ export class SubscriptionPublish {private eventMap: Record<string, ((params: any) > any)[]>;constructor() {this.eventMap {};}on(key: string, handler: (params: any) > any) {if (!this.eventMap[key]…

星露谷模组开发教程#7 自定义机器

首发于Enaium的个人博客 添加大型工艺品 机器也算是大型工艺品&#xff0c;所以我们需要先添加它的大型工艺品。 这里做一张16x32格式为png的图。 if (e.Name.IsEquivalentTo("Data/BigCraftables")) {e.Edit(assets >{var dict assets.AsDictionary<string…

动手学深度学习——02深度学习介绍

AI 地图 X 轴&#xff1a;不同的模式&#xff08;越往右时间越新&#xff09; 符号学概率模型&#xff1a;统计学模型机器学习 Y 轴&#xff1a;问题领域&#xff08;先要了解一个东西&#xff0c;然后通过推理形成知识&#xff0c;最后做规划&#xff09; 感知&#xff1a;…

【C++】特殊类设计类型转换

目录 &#x1f4a1;前言一&#xff0c;特殊类设计1. 请设计一个类&#xff0c;不能被拷贝2. 请设计一个类&#xff0c;只能在堆上创建对象3. 请设计一个类&#xff0c;只能在栈上创建对象4. 请设计一个类&#xff0c;不能被继承5. 请设计一个类&#xff0c;只能创建一个对象(单…

Web3与医疗健康:去中心化技术在医疗行业的应用前景

随着区块链技术和去中心化理念的兴起&#xff0c;Web3作为新一代互联网技术正逐渐影响各个行业。在医疗健康领域&#xff0c;Web3技术的应用前景引起了广泛关注。本文将探讨Web3如何通过去中心化技术提升医疗健康行业的效率、透明度和安全性&#xff0c;并分析其在实际应用中的…

Docker 部署 SkyWalking 的指南

Docker 部署 SkyWalking 的指南 SkyWalking 是一款开源的应用性能监控工具&#xff0c;特别适用于分布式系统。通过 Docker 部署 SkyWalking&#xff0c;可以简化安装和配置过程。本文将详细介绍如何使用 Docker 部署 SkyWalking。 环境准备 在开始之前&#xff0c;请确保你…

LeetCode-3148. 矩阵中的最大得分

本人算法萌新,为秋招找工作开始磨炼算法,算法题均用python实现,如果我有哪些地方做的有问题的,还请大家不吝赐教. 1.题干 给你一个由 正整数 组成、大小为 m x n 的矩阵 grid。你可以从矩阵中的任一单元格移动到另一个位于正下方或正右侧的任意单元格&#xff08;不必相邻&…

小程序实现设备消息订阅

小程序实现设备消息订阅 一、说明 先说明一下什么是小程序的消息订阅&#xff0c;其实就是在小程序进行某个消息的订阅&#xff0c;订阅以后就可以在微信收到推送的消息了。推送走的服务端&#xff0c;在服务端调用微信的推送接口&#xff0c;然后推送至指定的微信用户。 二…

xlua热补丁

print("*********第一个热补丁***********")--直接写好代码 运行 是会报错的 --我们必须做4个非常重要的操作 --1.加特性 --2.加宏 第一次开发热补丁需要加 --3.生成代码 --4.hotfix 注入 --注入时可能报错 提示你要引入Tools--热补丁的缺点&#xff1a;只要我们修改…

无人值守变电站视频监控统一接入系统方案

目录 一、背景介绍 1、无人值守变电站 2、特点 二、需求分析 1、基本需求 2、需求分析 三、目标和网络 1、设计目标 2、系统网络建设目标 四、系统组成 1、总体架构图 2、前端采集层 &#xff08;1&#xff09;摄像头 &#xff08;2&#xff09;传感器 &#xf…

Qt——多线程

一、QThread类 如果要设计多线程程序&#xff0c;一般是从QThread继承定义一个线程类&#xff0c;并重新定义QThread的虚函数 run() &#xff0c;在函数 run() 里处理线程的事件循环。 应用程序的线程称为主线程&#xff0c;创建的其他线程称为工作线程。主线程的 start() 函数…

猫头虎 分享已解决Bug || Failed to start docker.service: Unit not found. 解决方案

猫头虎 分享已解决Bug || Failed to start docker.service: Unit not found. 解决方案 今天猫头虎带您解决一个在运维工作中常见的问题&#xff1a; Failed to start docker.service: Unit not found.。这是一个困扰了许多运维小伙伴的问题&#xff0c;尤其是在部署Docker时&a…

安全测试担心效果不好?这3个安全测试工具你用了吗?

其实在信息科技发展的初期&#xff0c;很多互联网公司就有意识到保护软件产品安全的重要性。但时至今日&#xff0c;我们还是经常能看到某某app软件泄露用户隐私信息&#xff0c;或遭受黑客攻击导致一些损失&#xff0c;其中不乏有一定市场地位的大厂。此类信息安全问题屡见不鲜…

元素设置了sticky粘性布局后,关于滚动后怎么样让这个元素自动添加阴影,我用自定义指令实现

前言 在写h5或者pc站的时候&#xff0c;顶部总会固定一些东西。然后我们会设置顶部的容器为粘性布局固定在顶部。但滚动之后会很僵硬。例如下面这样&#xff1a; 我们看看element的表格的效果&#xff1a; 再来看看最后我们实现的效果&#xff1a; 其实网上也有纯css实现…

简单创建代理工厂

简单创建代理工厂 一般对于JDBC来说&#xff0c;无非就是连接数据库、查询数据库、封装实体、返回实体&#xff0c;如果要设计一个ORM框架的话也就是要考虑怎么把用户自定义的数据库操作接口、XML中的SQL语句、数据库三者给联系起来&#xff0c;其实最适合的操作就是代理&…

2766:最大子矩阵

网址如下&#xff1a; OpenJudge - 2766:最大子矩阵 用dp来做就行了 代码如下&#xff08;MLE&#xff09;&#xff1a; #include<cstdio>const int maxn 101; int dp[maxn][maxn][maxn][maxn]; int martix[maxn][maxn]; int N, ans;int main(void) {scanf("%d&q…

jackson 轻松搞定接口数据脱敏

一、简介 实际的业务开发过程中&#xff0c;我们经常需要对用户的隐私数据进行脱敏处理&#xff0c;所谓脱敏处理其实就是将数据进行混淆隐藏&#xff0c;例如下图&#xff0c;将用户的手机号、地址等数据信息&#xff0c;采用*进行隐藏&#xff0c;以免泄露个人隐私信息。 如…

C++_基本语法笔记_模板

函数模板 基本使用 思想是Java里的泛型&#xff08;不确定用什么类型的数据&#xff09; 这里template这一句&#xff0c;意思是声明T是泛型&#xff0c;后面写用到泛型T的函数。 建议都用template<class T> 应用场景&#xff1a;不同数据类型的交换函数 两种使用方法…

猫咪泪痕消除术!希喂主食罐开启补水大作战!

我家小猫之前的泪痕真的不是一般的严重&#xff0c;每天都能看到它眼角挂着两条明显的褐色痕迹&#xff0c;我每天早晚都得小心翼翼地帮它擦拭&#xff0c;但效果总是微乎其微&#xff0c;眼眶边总是留下那么一圈顽固的黑色痕迹&#xff0c;我真是既忧心又无奈。 后来&#xff…

2024【十大品牌网】发布|车载WiFi十大品牌排行榜

自驾游无法随时随地联网?货车司机流量不够用&#xff1f;网约车线上抢单网速不好&#xff1f;来看看最新发布的车载WiFi十大品牌排行榜&#xff0c;帮你解决网速慢、流量不够用的问题&#xff01; 1.格行 格行作为有15年历史的老牌物联网企业&#xff0c;在产品质量和服务上…