解决vue页面渲染但dom没渲染的操作


Posted in Javascript onJuly 27, 2020

我就废话不多说了,大家还是直接看代码吧~

this.$nextTick(() => {
            $("select[name='ddlCostCenter']").select2({
              language: "zh-CN"
            });
          });

补充知识:vue+Echarts动态数据已经赋值,但是无法渲染页面的问题

最近用vue+Echarts想做一个饼状统计图,但是数据明明已经绑定完毕,但是页面渲染一直没有效果,最终才发现问题所在,自己还是个新手,主要对vue还不是很熟悉。废话不说,接下来看我的代码:

正常的给个div的大小

<div>
  <div id="echartss" :style="{width: '100%', height: '600px'}"></div>
 </div>

接下来是option部分:

echarts1_option:{
      backgroundColor: '#45515a', //背景颜色
      //标题
      title: {
       text: '订单中保险公司所占的比例',
       subtext: '饼图示例',
       left: 'center',
       top: 20,
       textStyle: {
        color: '#ccc',
        fontStyle: 'italic'//标题字体
       }
      },
      //弹窗,响应鼠标指向,显示具体细节
      tooltip : {
       trigger: 'item',//以具体项目触发弹窗
       formatter: "{a} <br/>{b} : {c} ({d}%)",
      },
      //图例,选择要显示的项目
      legend:{
       orient:'vertical',
       left:'left',
       textStyle:{
        color:'#c8c8d0'
       },
       data:['安心','安盛天平','中华联合保险','中国太平洋保险','中国人保财险','平安车险'] //注意要和数据的name相对应
      },
      //工具箱
      toolbox:{
       show:true,//显示工具箱
       feature:{
        dataView:{show:true}, //以文字形式显示数据
        restore:{show:true},  //还原
        //dataZoom:{show:true}, //区域缩放
        saveAsImage:{show:true}, //保存图片
        //magicType:{type:['line','bar']}//动态数据切换,数据显示可以在该规定内容中切换显示方式,
       }
      },
      /*//视觉映射组件,将数据映射到视觉元素上
      visualMap: {
       show: false,
       min: 1,
       max: 2,
       dimension: 0, //选取数据的维度,如人数据:[身高,体重],则1代表将体重进行映射,默认值为数组的最后一位
       // seriesIndex: 4, //选取数据集合中的哪个数组,如{一班},{二班},默认选取data中的所有数据集
       inRange: {
        //选定了要映射的对象,用inRange详细写要渲染的具体细节,[x,y]中x指最小值对应的量(亮度,饱和度等),y指最大值对应的量,其余的按各自value线性渲染
        color:['red'],
        colorLightness: [0,1],
        colorSaturation:[0,1]
       }
      },*/
      //数据
      series : [
       {
        name: '成交数量',
        type: 'pie',
        radius: '55%',
        center: ['50%', '50%'],
        data:[

        ].sort(function (a, b) {
         return a.value - b.value;
        }),

        roseType: 'radius',//角度和半径展现百分比,'area'只用半径展现
        label: { //饼图图形的文本标签
         normal: { //下同,normal指在普通情况下样式,而非高亮时样式
          textStyle: {
           color: 'rgba(255, 255, 255, 0.3)'
          }
         }
        },
        labelLine: { //引导线样式
         normal: {
          lineStyle: {
           color: 'rgba(255, 255, 255, 0.3)'
          },
          smooth: 0.5, //0-1,越大越平滑弯曲
          length: 10, //从块到文字的第一段长
          length2: 20 //拐弯到文字的段长
         }
        },

        itemStyle: { //图例样式
         normal: {
           //color: '#97413c',
          shadowBlur: 50,//阴影模糊程度
          shadowColor: 'rgba(0, 0, 0, 0.5)',//阴影颜色,一般黑

         }
        },
        animationType: 'scale', //初始动画效果,scale是缩放,expansion是展开
        animationEasing: 'elasticOut', //初始动画缓动效果
        animationDelay: function (idx) { //数据更新动画时长,idx限定了每个数据块从无到有的速度
         return Math.random() * 200;
        }


       }
      ],
      color: ['#97858c','pink','green','yellow','orange','#97813c'],
     },

接下来看init代码

init(){
     // 基于准备好的dom,初始化echarts实例
     let myChart = echarts.init(document.getElementById('echartss'))
     // 绘制图表,this.echarts1_option是数据
     myChart.setOption(this.echarts1_option,true)
    },

然后是给动态数据赋值代码(从后台接口取得的数据)

drawline() {
     // 数据初始化
     API.account.getAccount().then(({data}) => {
      if (data && data.code == 0) {
       this.echarts1_option.series[0].data=data.data.list;
      } else {
       this.$Message.error(data.msg);
      }
     }).catch((data) => {
      this.$Message.error('连接失败,请检查网络!');
     });

    },

到目前为止,页面的结果是:

解决vue页面渲染但dom没渲染的操作

页面完全没有效果:

在加上下面代码后:

//数据自动刷新,必然需要一个监听机制告诉Echarts重新设置数据
  watch: {
   //观察option的变化
   echarts1_option: {
    handler(newVal, oldVal) {
     if (this.myChart) {
      if (newVal) {
       this.myChart.setOption(newVal);
      } else {
       this.myChart.setOption(oldVal);
      }
     } else {
      this.init();
     }
    },
    deep: true //对象内部属性的监听,关键。
   }
  },

我们再看看运行结果:

解决vue页面渲染但dom没渲染的操作

数据虽然刷新了,但是我们的Echart's组件却不知道,必须有个watch过程。

以上这篇解决vue页面渲染但dom没渲染的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery checkbox全选/取消全选实现代码
Nov 14 Javascript
javascript与CSS复习(三)
Jun 29 Javascript
js+JQuery返回顶部功能如何实现
Dec 03 Javascript
jQuery实现的Div窗口震动特效
Jun 09 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
Angularjs 实现分页功能及示例代码
Sep 14 Javascript
第一次接触神奇的Bootstrap
Oct 14 Javascript
JavaScript常见的五种数组去重的方式
Dec 15 Javascript
详解jQuery选择器
Dec 21 Javascript
微信小程序图片宽100%显示并且不变形
Jun 21 Javascript
Vue 全家桶实现移动端酷狗音乐功能
Nov 16 Javascript
js实现炫酷光感效果
Sep 05 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
Jul 27 #Javascript
Element Breadcrumb 面包屑的使用方法
Jul 26 #Javascript
Element PageHeader页头的使用方法
Jul 26 #Javascript
Element Dropdown下拉菜单的使用方法
Jul 26 #Javascript
Vue中的this.$options.data()和this.$data用法说明
Jul 26 #Javascript
解决vue的router组件component在import时不能使用变量问题
Jul 26 #Javascript
Element Steps步骤条的使用方法
Jul 26 #Javascript
You might like
SMARTY学习手记
2007/01/04 PHP
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
javascript 类方法定义还是有点区别
2009/04/15 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
微信小程序 Button 组件详解及简单实例
2017/01/10 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
python实现的简单RPG游戏流程实例
2015/06/28 Python
Python中进程和线程的区别详解
2017/10/29 Python
python实现一组典型数据格式转换
2018/12/15 Python
Django Rest framework频率原理与限制
2019/07/26 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
食品工程专业求职信
2014/06/15 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
初中学习计划书范文
2014/09/15 职场文书
行政前台岗位职责
2015/04/16 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
高中军训感想
2015/08/07 职场文书