解决vue轮翻效果数据加载后,页面无渲染效果问题

最近在做vue项目,做轮翻效果时,遇到数据从后台加载后无法渲染的问题,然后查询资料后解决了,记录一下,就当学习了。

  1. 首先介绍一下基础知识:用DataV插件,做轮翻效果,代码非常简单,在页面中直接引用标签,直接在data里面写数据就就行了;
  2. 先安装DataV
npm install @jiaminghi/data-view
  1. 在main.js里面全局注册DataV
// 将自动注册所有组件为全局组件
import dataV from '@jiaminghi/data-view'
Vue.use(dataV)
  1. 创建vue组件,使用dv-scroll-board标签
<template>
    <div class="public-header" style="">
      <img
        style=""
        src="../../assets/img/title-icon.png"
        alt=""
      />
      <div> 项目情况</div>
    </div>
    <dv-scroll-board :config="config" style="width:92%;height:200px;margin: 10px auto 0"/>
  </div>
</template>

<script>
  import {downFile, getAction, httpAction, postAction} from "@api/manage";
  import {getPersenalProject} from '@/api/api'
  import {USER_INFO} from '@/store/mutation-types'
  import Vue from "vue";
  const user = Vue.ls.get(USER_INFO)
  
  const url = {
    //加载项目情况
    getProjectInfo: "/esdrs/project/getProjectInfo",
  };

  export default {
    name: "right-box",
    components: {},
    data() {
      return {
        config: {
          header: ['序号', '图纸名称', '办理状态', '项目状态'],
          data: [
            // ['1', '正常', '已分配', 'XZD2020123100', '...'],
            // ['2', '异常', '已分配', 'XZD2020123100', '...'],
            // ['3', '正常', '已分配', 'XZD2020123100', '...'],
            // ['4', '正常', '已分配', 'XZD2020123100', '...'],
            // ['5', '正常', '已分配', 'XZD2020123100', '...'],
            // ['6', '异常', '已分配', 'XZD2020123100', '...'],
            // ['7', '正常', '已分配', 'XZD2020123100', '...'],
            // ['8', '正常', '已分配', 'XZD2020123100', '...'],
            ],
          align: ['center', 'center', 'center'],
          oddRowBGC: 'transparent',
          evenRowBGC: 'transparent',
          color: 'red',
          headerBGC: '#F1F4FA',
          rowNum: 5,
          columnWidth: [60],
        }
      }
    },
    watch: {},
    methods: {
      //加载项目情况
      async loadProjectInfoData() {
        let param = {
          startTime: startTime,
          endTime: endTime
        };
        await getAction(url.getProjectInfo, param).then(res => {
          if (res.success) {
            // console.log("加载项目信息");
            let projectList = res.result.records || res.result;
            if (projectList != null) {
              let arrList = [];
              for (let i = 0; i < projectList.length; i++) {
                let arr = [];
                arr.push(i + 1 + '');
                arr.push(projectList[i]['projectName']);
                let alarmType = projectList[i]['alarmType'];
                arrList.push(arr);
              }
              this.config.data = arrList;
              this.config = {...this.config};//必不可少,不可省略
            }
          } else {
            // console.dir(res);
          }
        })
      },
    mounted() {
      this.loadProjectInfoData();
    },
    created() {
  }
</script>

其中,config中data数据即为轮翻数据,align:表示显示位置,rowNum:表示轮翻显示的条数;

  1. 当调用后台数据后,数据加载到了,发现界面没渲染上效果,查了资料说,加载数据后要加上这句,
    this.config = {…this.config};//!!!必不可少,不可省略,相当于是把数据重新渲染到页面。果然加上这句话可以把数据渲染上了。
    同时,因为访问后台用的axios异步访问,可能是数据还没加载完,就加载页面信息,导致后台请求的数据没渲染到界面上,为了保险起见,将访问后台方法loadProjectInfoData添加async ,将axios访问方法添加await,设置为同步加载,确保加载页面之前,先将数据加载过来。
  2. 显示效果
    在这里插入图片描述
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒二哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值